Подпроцесс Python на сервере Flask - как определить, когда подпроцесс завершается? - PullRequest
0 голосов
/ 13 марта 2020

Я создаю приложение в React Native, которое генерирует файлы 3D-модели на основе пользовательского ввода в рамках своей функциональности. Приложение получает «код» от пользователя на главном экране и отправляет его на сервер Flask с помощью запроса POST, который затем генерирует файл модели, используя код с фиксированным URI (например, /static/mod.obj) , Затем приложение переходит на отдельный экран дисплея и получает файлы модели по этому URI для отображения. В настоящее время сервер Flask создает файлы модели для каждого запроса POST в отдельном подпроцессе, как показано ниже:

@app.route('/genpdb', methods=['POST'])
def genpdb():
    # ...
    subprocess.Popen(['python', 'convPDB.py', '--code', json["code"]]) # python script convPDB.py generates 3D model from 'code' param in request JSON
    return json['code'] # response doesn't return anything important; generated model is simply hosted at a fixed uri e.g. /static/mod.obj

Я использовал конструктор Popen для создания подпроцессов, чтобы они были неблокирующими. Однако мне бы хотелось, чтобы клиент получал уведомление о завершении сценария генерации (т. Е. О завершении подпроцесса), чтобы приложение не переключалось на экран дисплея до того, как на самом деле появятся файлы модели. Есть ли какой-нибудь способ для уникального подпроцесса, порожденного сервером, уведомить клиента, который запросил его, о его завершении?

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