multiprocessing.Process блокирует оператор return при запуске с uWSGI - PullRequest
1 голос
/ 15 октября 2019

Я запускаю API назад и в настоящее время я использую subprocess.Popen. Поскольку вызываемые модули являются чистым питоном, моя идея - запустить его с multiprocessing.Process или Pull. Запрос обрабатывается так:

  1. Запрос поступает в конечную точку Connexion
  2. Некоторая предварительная обработка выполняется
  3. Функция открывается с помощью Popen
  4. Запрос возвращает 200, не дожидаясь 3. завершения

При замене:

Popen(...)

на

p = Process(target=...)
p.start()

это происходит с многопроцессорной обработкой с uwsgi:

  1. Запрос приходит к Connexion конечной точке
  2. Некоторая предварительная обработка выполнена
  3. Функция открывается с помощью Process
  4. Запрос немедленно возвращает 200, но второй запрос к той же конечной точке потребует завершения предыдущих 3.

, если я запустил его на https://github.com/tiangolo/uwsgi-nginx-flask-docker:

...

Запрос ожидает, пока 3 не закончится, а затем возвращает 200

. Он работает так, как ожидается, если я запускаю процесс с python -m ....

Мой uwsgi.ini выглядит такэто

 [uwsgi]
 module = myapp
 callable = app
 lazy-apps = true
 stats-http = true
 http = 127.0.0.1:8080
...