2012-02-21 4 views
0

Я пытаюсь создать простую программу с помощью Google App Engine.Настройка обработчиков сценариев Google App Engine

Ниже мой код

helloworld.py

print "hello" 

class helloworld(): 
     def myfunc(self): 
       st = "inside class" 
       return st 

test.py

import helloworld 

hw_object = helloworld.helloworld() 
print hw_object.myfunc() 

app.yaml

handlers: 
- url: /.* 
    script: helloworld.py 

- url: /.* 
    script: test.py 

Когда я RU n мое приложение через http://localhost:10000 печатает только hello, тогда как мой ожидаемый результат равен hello и inside class.

Моя структура каталогов

E:\helloworld>dir 
app.yaml  helloworld.py test.py 

Я уверен, что это что-то делать с Script Handlers .so, что такое правильный способ определить обработчики и что неправильно в моем пути их определения.

+0

Вы хотите иметь два идентичных маршрутных регулярных выражения? – bernie

+0

Я имею в виду, как я могу настроить my 'app.yaml', если в моей папке есть несколько скриптов. Я попробовал описанный выше шаблон, который он не сработал. Что мне нужно, если я запускаю' localhost: 10000', то оба моих сценария должны быть но этого не происходит. – RanRag

+0

@AdamBernier: Я попробовал 'url:/test /.*', но все равно не повезло. – RanRag

ответ

3

Когда ваш первый шаблон обработчика /.* соответствует http://localhost:10000, остальные обработчики игнорируются.

Вы можете обновил свой app.yaml

handlers: 
- url: /hello 
    script: helloworld.py 

- url: /test 
    script: test.py 

И просмотреть http://localhost:10000/test

0

Просьба ознакомиться с руководством по началу работы с руководством по началу работы. Это поможет вам решить начальные проблемы с настройкой.

http://code.google.com/appengine/docs/python/gettingstarted/helloworld.html

Вот пример обработчика из этой документации.

from google.appengine.ext import webapp 
from google.appengine.ext.webapp.util import run_wsgi_app 

class MainPage(webapp.RequestHandler): 
    def get(self): 
     self.response.headers['Content-Type'] = 'text/plain' 
     self.response.out.write('Hello, webapp World!') 

application = webapp.WSGIApplication(
           [('/', MainPage)], 
           debug=True) 

def main(): 
    run_wsgi_app(application) 

if __name__ == "__main__": 
    main() 

Обратите внимание, что класс расширяет webapp.RequestHandler, имя метода получения (или сообщение, если вы отвечаете на запрос HTTP POST) Кроме того, дополнительный код в нижней части для установки приложения. Вы можете добавить дополнительные URL-адреса в приложение, добавив аргументы в WSGIApplication. Например:

application = webapp.WSGIApplication(
           [('/', MainPage)], 
           [('/help/', HelpPage)], 
           debug=True) 

Также отметим, что в вашем app.yaml, как оба скрипта относятся к той же схеме, что URL, нет никакого способа, что любой запрос будет когда-нибудь test.py. Обычная модель состоит в том, чтобы иметь определенные шаблоны url в верхней части экрана, а последний - последний.

Удачи.

0

У меня тоже была похожая проблема.Развивая ответ Хэмиш, и исправление последней части, где квадратные скобки:

application = webapp.WSGIApplication([ 
          ('/', MainPage), 
          ('/help/', HelpPage)], 
          debug=True) 

Ссылка: https://webapp-improved.appspot.com/guide/routing.html

** Edit Я также имел дополнительный закрывающую скобку в моем коде выше. Теперь это изменилось.