Я запускаю API назад и в настоящее время я использую subprocess.Popen
. Поскольку вызываемые модули являются чистым питоном, моя идея - запустить его с multiprocessing.Process
или Pull
. Запрос обрабатывается так:
- Запрос поступает в конечную точку
Connexion
- Некоторая предварительная обработка выполняется
- Функция открывается с помощью Popen
- Запрос возвращает 200, не дожидаясь 3. завершения
При замене:
Popen(...)
на
p = Process(target=...)
p.start()
это происходит с многопроцессорной обработкой с uwsgi:
- Запрос приходит к
Connexion
конечной точке - Некоторая предварительная обработка выполнена
- Функция открывается с помощью Process
- Запрос немедленно возвращает 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