Как мне запустить dev_appserver.py из моего файла функций в Python себя? - PullRequest
0 голосов
/ 18 апреля 2019

dev_appserver.py запускает локальное развертывание моей службы appengine. Я хочу запустить свои тесты поведения на этом локальном сервисе. Я хочу сначала запустить сервер в моих тестах. Как запустить команду dev_appsrrver.py app.yaml в моем файле функций поведения при запуске?

Я пробовал subprocess.run ("python", "dev_appserver.py"), но он говорит, что не может найти файл dev_appserver.py. Я примеряю окна.

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

Когда вы пытаетесь запустить исполняемые файлы с использованием методов subprocess, обычно вы не получаете по умолчанию ту же среду (путь выполнения и текущий рабочий каталог), в которой находитесь в оболочке / терминале. Это означает, что вам может понадобиться ссылаться на файлы (как исполняемые, так и обычные файлы), используя полные пути в списке аргументов, которые вы передаете этим методам.

Поскольку жалоба на выполнение subprocess.run() в отношении местоположения dev_appserver.py означает, что он находит python в порядке (вы все равно можете проверить, что это версия 2.7), и вам необходимо указать полный путь для dev_appserver.py, который зависит от в вашей ОС и в SDK, который вы используете. Например, в Linux (извините, я не специалист по Windows) путь:

  • <GAE_SDK_dir>/dev_appserver.py при использовании GAE SDK
  • <gcloud_SDK_dir>/bin/dev_appserver.py при использовании gcloud SDK

Скорее всего, вам также понадобится передать путь к файлу app.yaml вашего приложения GAE - в качестве аргумента dev_appserver.py, в противном случае вы увидите, что он будет жаловаться на невозможность найти приложение или его файлы (или просто что-то работает плохо - если файл app.yaml не указан, dev_appserver.py пытается автоматически его обнаружить, и это работает не во всех случаях). Я бы избегал сложностей и просто указывал app.yaml файл (ы).

Также обратите внимание, что аргументы subprocess.run() должны быть списком. Примерно так:

subprocess.run(['python', '<sdk_path_to>/dev_appserver.py', '<app_path_to>/app.yaml'])

См. Также appcfg.py не работает в командной строке - пост о другом исполняемом файле, но ответы в равной степени применимы к dev_appserver.py.

0 голосов
/ 18 апреля 2019

Цитирование документации App Engine :

Чтобы запустить локальный сервер разработки:

  1. Выполнитькоманда dev_appserver.py, следующая из каталога, в котором находится файл конфигурации app.yaml вашего приложения:

    Укажите путь к каталогу вашего приложения, например:

    dev_appserver.py [PATH_TO_YOUR_APP].

    В качестве альтернативы, вы можете указать файл конфигурации конкретной службы, например:

    dev_appserver.py app.yaml.

    Чтобы изменить порт, вы включаете опцию --port:

    dev_appserver.py --port=9999 [PATH_TO_YOUR_APP]

...