«Модули приложений» - это новая (и экспериментальная, и смущающая) функция в App Engine: https://developers.google.com/appengine/docs/python/modules. Разработчикам настоятельно рекомендуется преобразовать использование функции «backends» для использования этой новой функции.Запуск модулей модулей приложений в Google App Engine
Там, кажется, два способа запуска экземпляра модуля: отправить запрос HTTP к нему (то есть в http://modulename.appname.appspot.com
для appname
применения и modulename
модуля), или для вызова google.appengine.api.modules.start_module()
.
Простой способ
Простой способ запуска экземпляра модуля, казалось бы создать запрос HTTP. Тем не менее, в моем случае это приводит только два результатов, ни один из которых является то, что я хочу:
Если я использую имя бэкэнда, который определяет мое приложение, т.е.
http://backend.appname.appspot.com
, запрос надлежащим образом направляется к backend и надлежащим образом лишены (поскольку доступ к бэкэнду по умолчанию определяется как закрытый).Любое другое приводит к тому, что запрос направляется к единственному интерфейсу модуля по умолчанию, даже используя случайные строки символов в качестве имен модулей, например
http://sdlsdjfsldfsdf.appname.appspot.com
. Это даже справедливо для идентификаторов экземпляров, например, в случаеhttp://99.sdlsdjfsldfsdf.appname.appspot.com
и т. Д. И, конечно, (это проблема) для фактического имени моего модуля.
Запуск через API
В документации сказано, что вызов start_module()
с именем модуля и версии должны вызывать указанную версию указанного модуля для запуска. Тем не менее, я получаю UnexpectedStateError
всякий раз, когда я вызываю эту функцию с допустимыми аргументами.
несчастного положение дел
Потому что я не могу получить эту работу, мне интересно, если есть некоторая тонкость, что документация не может быть упомянута. Моя настройка довольно проста, поэтому мне интересно, является ли это распространенной проблемой, с которой кто-то нашел решение.
Как я вижу модули, они не являются чем-то, что запускается. Вместо этого это способ разделить ваше приложение на разные логические единицы, например. веб-и api-часть вашего приложения. Таким образом, один из способов просмотра модулей - это несколько приложений в одном приложении, которые используют общие ресурсы, такие как хранилище данных и memcache. В [примере на Python] (https://github.com/GoogleCloudPlatform/appengine-modules-helloworld-python) нет упоминания о запуске модуля. У них просто разные URL-адреса. – dlebech
Но в панели управления администратора вы можете просмотреть экземпляры, которые были запущены для вашего приложения, и каждый экземпляр связан с модулем и версией. (Фактически вы выбираете модуль и версию и можете просматривать все экземпляры, связанные с этой парой.) И когда вы просматриваете экземпляры, вы можете их закрыть ... так что они каким-то образом начали работать. – Jeremy
Экземпляры автоматически запускаются при запросе вашего приложения. В случае модулей я предполагаю, что он работает одинаково: экземпляры для модуля автоматически запускаются, когда выполняется запрос для URL-адреса, обслуживаемого модулем. Конечно, вы можете установить некоторые незанятые экземпляры (в настройках приложения), и вы, вероятно, также можете запускать экземпляры по требованию (в определенной степени), но обычно это происходит автоматически и не является чем-то специфичным для модулей. Опять же, это основано на моем понимании, поэтому я могу ошибаться. – dlebech