Настройка обработчиков скриптов Google App Engine - PullRequest
0 голосов
/ 21 февраля 2012

Я пытаюсь создать простое приложение, используя 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

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

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

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

Я почти уверен, что это как-то связано с Обработчиками сценариев . Итак, как правильно определить обработчики и что неправильно на моем путиопределения их.

Ответы [ 3 ]

3 голосов
/ 21 февраля 2012

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

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

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

- url: /test
  script: test.py

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

0 голосов
/ 26 октября 2015

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

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

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

** Править У меня также была дополнительная закрывающая скобка в моем коде выше.Изменил это сейчас.

0 голосов
/ 21 февраля 2012

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

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, имя метода - get (или post, если вы отвечаете на запрос http http). Кроме того, в нижней части приведен дополнительный код для настройки приложения. Вы можете добавить дополнительные URL-адреса к приложению, добавив аргументы в WSGIApplication. Например:

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

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

Удачи.

...