URL-адрес маршрута к серверу GAE Flex, в то время как остальная часть сайта работает по стандарту GAE - PullRequest
0 голосов
/ 13 ноября 2018

Используя Google App Engine Standard Python 2.7, в моем dispatch.yaml есть путь для указания всех URL-адресов типа "* / flex / *" для маршрутизации в службу flex.

dispatch.yaml dispatch:

- url: '*/flex/*'
    module: flex

Среда flex - это пользовательская среда выполнения Python 3.7, которая обычно выполняется с использованием:

python dev_appserver.py flex.yaml --custom_entrypoint="docker run -p 9090:8080 flex_app".

С другими службами в моей среде я пытаюсь запустить среду разработки с помощью команды: python dev_appserver.py dispatch.yaml default.yaml sync.yaml task.yaml flex.yaml --custom_entrypoint="docker run -p 9090:8080 flex_app" --port=8080 --skip_sdk_update_check"

Однако, когда она начинается, она начинает назначать локальные IP-адреса каждой службе, когда ятребуется доступ к сервису flex из порта 9090.

Пример вывода на сервер:

INFO     devappserver2.py:278] Skipping SDK update check.
INFO     dispatcher.py:223] Starting dispatcher running at: http://0.0.0.0:8080
INFO     dispatcher.py:256] Starting module "default" running at: http://0.0.0.0:8081
INFO     dispatcher.py:256] Starting module "sync" running at: http://0.0.0.0:8082
INFO     dispatcher.py:256] Starting module "task" running at: http://0.0.0.0:8083
INFO     dispatcher.py:256] Starting module "flex" running at: http://0.0.0.0:8084

Я могу успешно получить доступ к приложению flex, если я нажму URL localhost: 9090.Однако, если я получаю доступ к localhost: 8084 или localhost: 8080 / flex /, я получаю сообщение об ошибке:

503 - This request has timed out.

В журналах сервера это отражено, но не отображается фактическая ошибка:

INFO module.py:861] flex: "GET / HTTP/1.1" 503 59

Можно ли отправить URL-адреса из стандартных сред GAE в среду Flex и направить их от назначенного порта к нужному порту?Я думаю, это возможно, так как Doc от Google App Engine указывает, что можно смешивать окружения вместе.Я также попытался решить эту проблему, заставив docker работать на порте 8084, но порты не могут быть общими.

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Нашел это, посмотрев в dev_appserver.py --help.Получается, что ответом на это было просто изменение custom_entrypoint на команду docker run -p {port}:8080 flex_app, и это автоматически перенаправит произвольно назначенный порт GAE в экземпляр докера.

--custom_entrypoint CUSTOM_ENTRYPOINT
                        specify an entrypoint for custom runtime modules. This
                        is required when such modules are present. Include
                        "{port}" in the string (without quotes) to pass the
                        port number in as an argument.
0 голосов
/ 13 ноября 2018

Сервер разработки может использоваться только для стандартных приложений среды первого поколения, он не работает с гибкими приложениями, см. Как использовать Python 3 с локальным сервером разработки Google App Engine .

Я думаю ваша попытка заканчивается тем, что служба запускается как стандартная среда, а не как гибкая (шансы на ее корректную работу довольно малы).

Чтобы работать правильно, вам нужно удалить его из локального выполнения dev_server. Для межсервисных связей с гибким сервисом потребуется локальный хакер для использования порта 9090 (через переменные env или просто через некоторые жестко заданные значения), в этом случае вы не сможете использовать dispatch.yaml маршрутизацию (так как локальный devserver не узнает о существовании гибкого сервиса).

...