Модули GAE и конечные точки Google

Я переношу приложение GAE в модули и имею проблемы с маршрутизацией для моего модуля api на основе конечных точек Google.

В принципе, все мои запросы API направляются к модулю по умолчанию, в то время как другая маршрутизация работает хорошо

Моя структура папок

 - /gae -- dispatch.yaml -- www/ ---- www.yaml ---- [www module files] -- foo/ ---- foo.yaml ---- [foo module files] -- api/api.yaml ---- api.yaml ---- [foo module files] 

dispatch.yaml

 application: testapp dispatch: - url: "testapp.appspot.com/" module: default - url: "*/_ah/spi/*" module: api - url: "*/_ah/api/*" module: api - url: "*/foo/*" module: foomodule 

Я развертываю с

 cd gae appcfg.py update www/www.yaml upload/upload.yaml api/api.yaml appcfg.py update_dispatch . 

Я могу увидеть 3 экземпляра (по одному на модуль).

Но потом:

  • такие запросы, как http://testapp.appspot.com/xxx , правильно перенаправляются на модуль / экземпляр по умолчанию
  • /foo/xxx ones обрабатываются foomodule
  • Запросы API ( /_ah/spi/xxx ) поступают в модуль по умолчанию с 404.
  • Как ни странно, при запуске приложения я могу увидеть 200 OK для /_ah/spi/BackendService.logMessages в журналах экземпляра api .

Из журналов я также вижу, что:

  • Предыдущий logMessage 200 OK происходит от alpha-dot-api-dot-testapp.appspot.com
  • 404 для модуля api – от testapp.appspot.com
  • Тем не менее, 200 OK для нестандартных модулей также относятся к `testapp.appspot.com`

Есть ли что-то, что я делаю неправильно? Любая специальная маршрутизация, необходимая для конечных точек Google, когда они используются в качестве модулей?

One Solution collect form web for “Модули GAE и конечные точки Google”

Поскольку я вижу, что API является модулем по умолчанию, в документах говорится, что «модуль по умолчанию должен быть загружен первым», также вам нужно поместить параметр «module: default» в файл yaml или вообще не включить Try

 appcfg.py update api/api.yaml www/www.yaml upload/upload.yaml #api first appcfg.py update_dispatch 
  • Twilio RequestValidator для Python всегда возвращает false
  • Получить общедоступный URL для файла - Google Cloud Storage - движок приложений (Python)
  • Как определить конфигурационные переменные / константы в Google App Engine (Python)?
  • Заголовок Access-Control-Allow-Origin в Google App Engine
  • Python sqllite3 с каркасом для бутылок в Google App Engine
  • Зачем импортировать urlfetch из Google App Engine?
  • Загрузка данных с помощью загрузчика
  • Google App Engine: task_retry_limit не работает?
  • Python decimal.Decimal id не то же самое
  • Как сохранить сгенерированный PDF-файл с Reportlab в хранилище данных в App Engine Python
  • невозможно создать новый канал в javascript API канала
  •  
    Interesting Posts for Van-Lav

    Python – в чем разница между @property и настройкой в ​​__init __ ()?

    Сравните два разных файла по строкам и напишите разницу в третьем файле – Python

    Разбор XML или YML в OpenCV с помощью Python

    Python – Можно ли передать себя внешней функции?

    Чтение части большого файла xlsx с помощью python

    Преобразование двоичных файлов в ASCII и наоборот

    Функция удаления

    Каков правильный способ закрыть соединение SSH с витой раковиной?

    Почему это работает в оболочке Python IDLE, но не тогда, когда я запускаю ее как скрипт Python из командной строки?

    Как вы можете очистить текстовое поле Matplotlib, которое было ранее нарисовано?

    смешение супер и классических вызовов в Python

    Почему python setup.py говорит неверную команду 'bdist_wheel' на Travis CI?

    Django почтовый ящик для текстовых сообщений – максимальная длина строки (и как ее изменить)?

    Лучший (самый «питонический») способ временно разархивировать файл

    Сериализация объекта FeedParser для Atom

    Python - лучший язык программирования в мире.