Как заставить модули App Engine работать

#python #google-app-engine #python-2.7 #module

# #python #google-app-engine #python-2.7 #модуль

Вопрос:

Я изучаю модули Google App Engine, но, похоже, я не могу запустить их на dev_appserver, даже загрузив и используя их пример приложения.

Согласно образцу приложения, все запросы, отправленные /work или /mobile будут отправлены в соответствующий модуль.

Однако, когда я отправляю запрос в http://localhost:8080/work or http://localhost:8080/mobile , он возвращает 404.

Я запускаю dev_appserver с помощью командной строки:

 dev_appserver.py appengine-modules-helloworld-python-master
 

И я получаю:

 INFO     2014-06-23 09:39:16,375 sdk_update_checker.py:242] Checking for updates to the SDK.
INFO     2014-06-23 09:39:16,673 sdk_update_checker.py:286] This SDK release is newer than the advertised release.
WARNING  2014-06-23 09:39:16,678 api_server.py:378] Could not initialize images API; you are likely missing the Python "PIL" module.
INFO     2014-06-23 09:39:16,682 api_server.py:171] Starting API server at: http://localhost:61790
INFO     2014-06-23 09:39:16,686 dispatcher.py:182] Starting module "default" running at: http://localhost:8080
INFO     2014-06-23 09:39:16,692 admin_server.py:117] Starting admin server at: http://localhost:8000
 

Согласно документации, я должен видеть больше строк, сообщающих мне, что другие модули запускаются на разных портах, но по какой-то причине я этого не понимаю.

Затем, если я выполню следующий код:

 import webapp2
from google.appengine.api import modules

class MainPage(webapp2.RequestHandler):
    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.write('Hello, webapp2 World!n%sn%s' % (modules.get_modules(), modules.get_hostname()))

APP = webapp2.WSGIApplication([('/', MainPage),], debug=True)
 

Это приводит к:

 Hello, webapp2 World!
['default']
localhost:8080
 

Как будто модули, отличные от стандартных, не были загружены…

Как правильно настроить модуль и заставить его работать как на локальном сервере разработки, так и на производстве?

Спасибо

Комментарии:

1. Вам нужно будет опубликовать свои файлы yaml, чтобы мы могли помочь. В образце есть обработчики URL-адресов для /work и /mobile. Я не видел ни одного для развлечения.

2. Извините, моя ошибка. Да, это /work и /mobile . Итак, вопрос в том, что с этими файлами YAML, почему, когда я вызываю эти два URL-адреса, он возвращает 404 вместо запроса, направляемого в модули?

3. Недостаточно информации. Что вы http://localhost:8080 получаете, когда переходите к? Можете ли вы опубликовать другие свои файлы yaml, включая dispatch.yaml?

4. Я отредактировал сообщение и добавил все детали. Похоже, dev_appserver не запускает модули…

5. Все еще нужно просмотреть файлы yaml.

Ответ №1:

У вас неправильные имена приложений в файлах yaml. Имена должны соответствовать тому, что вы используете при запуске локального сервера в dev_appserver.py команде: appengine-modules-helloworld-python-master . Переключите его в команде или файлах yaml, чтобы они совпадали.

Вам также необходимо запустить модули на сервере разработки:

dev_appserver.py dispatch.yaml app.yaml mobile_frontend.yaml static_backend.yaml

Комментарии:

1. Хорошо, я изменил имя каталога приложения на «simple-sample», чтобы оно совпадало с именем приложения в файлах YAML. Я бегу dev_appserver.py simple-sample и получаю тот же результат, что и раньше. Никакие модули не инициализируются в журнале запуска, когда я отправляю запрос на указанные выше URL-адреса / work или /mobile, возвращается 404.

2. Спасибо! Я не знаю, нужно ли было добавлять файлы yaml в параметры dev_appserver. Работает сейчас! Еще раз спасибо!