Можете ли вы запустить подпроцесс модуля Python из стандартной среды App Engine? - PullRequest
0 голосов
/ 24 октября 2019

Можете ли вы запустить подпроцесс модуля Python в Standard App Engine на Google Cloud Platform?

У меня есть веб-приложение Flask, которое я хотел бы развернуть, но оно включает модуль подпроцесса, который вызывает некоторые пакетные сценарии. Пакетные сценарии выполняют важные команды CL, для которых в настоящее время нет API-интерфейса Python, поэтому я не могу придумать простого обходного пути для устранения зависимости от подпроцесса.

Нужно ли будет развертывать это в Flexible App Engine, чтобы иметь возможностьзапустить пакетные файлы?

Любое руководство было бы полезным, я не смог найти четкого ответа в документации GCP, но некоторые указания о том, где искать, были бы блестящими. Спасибо!

Ответы [ 2 ]

0 голосов
/ 25 октября 2019

IDK, какова цель вашего сценария, но в STD и FLEX ядра приложения можно запустить подпроцесс, возможно, вам нужно создать пользовательскую среду выполнения FLEX для добавления необходимых Linux-зависимостей для вашего сценария bash как создатьпользовательская среда выполнения .

Я попробовал этот пример кода на GAE FLEX / STD ENV

app.yaml [FLEX]

runtime: python
env: flex
runtime_config:
  python_version: 3.7

entrypoint: gunicorn -b :$PORT main:app

app.yaml [STD]

runtime: python37

entrypoint: gunicorn -b :$PORT main:app

needs.txt

Flask==1.0.2
gunicorn

main.py

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    import subprocess
    process = subprocess.run(['ls','-lha'], check=True, stdout=subprocess.PIPE, universal_newlines=True)
    output = process.stdout
    return output

if __name__ == '__main__':
    app.run(host='127.0.0.1', port=8080, debug=True)
0 голосов
/ 25 октября 2019

Похоже, что это выполнимо с ограничением, которое должно быть выполнено при обработке запроса. Вы смотрели на https://cloud.google.com/appengine/docs/standard/python3/python-differences#background_threads?

"Фоновые потоки

Python 3 в стандартной среде App Engine не имеет ограничений песочницы, поэтому вы можете свободно создавать потоки или процессы, которые находятся за пределами среды запроса. Потоки и процессы могут порождатьсяиспользуя встроенные в Python функции многопоточности и многопоточности. Однако обратите внимание, что новые потоки или процессы могут не запускаться после обслуживания входящего запроса. "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...