多处理.进程在使用uWSGI运行时阻塞了返回语句



我正在运行一个API,目前,我正在使用subprocess.Popen。由于调用的模块是纯python,我的想法是用multiprocessing.ProcessPull运行它。请求的处理方式如下:

  1. 请求到达Connexion终结点
  2. 完成一些预处理
  3. 该功能使用Popen打开
  4. 请求返回 200,而不等待 3。
  5. 完成

更换时:

Popen(...)

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

这发生在使用UWSGI 的多处理中:

  1. 请求到达Connexion终结点
  2. 完成一些预处理
  3. 该功能通过进程打开
  4. 请求会立即返回 200,但对同一终结点的第二个请求将需要前 3 个请求才能完成。

如果我在 https://github.com/tiangolo/uwsgi-nginx-flask-docker 上运行它:

  1. 请求等到 3 完成,然后返回 200

如果我使用python -m ...运行该过程,它会按检查方式工作。

我的 uwsgi.ini看起来像这样

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

你的uwsgi.ini应该启用线程,默认情况下,这些线程被阻止。

将其更改为以下内容

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

相关内容

  • 没有找到相关文章

最新更新