1

我正在运行一个 API,目前,我正在使用subprocess.Popen. 由于被调用的模块是纯 python,我的想法是使用multiprocessing.Processor运行它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上运行它:

...

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

如果我使用python -m ....

我的 uwsgi.ini 看起来像这样

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

1 回答 1

0

您的 uwsgi.ini 应该启用默认情况下被阻止的线程。

将其更改为以下

[uwsgi]
module = myapp
callable = app
lazy-apps = true
stats-http = true
http = 127.0.0.1:8080
enable-threads = true
于 2020-08-15T03:26:12.850 回答