python - 在 Flask-UWSGI 应用程序中处理耗时的请求

标签 python nginx flask uwsgi

我正在使用 Flask 、 UWSGI 和 Nginx 运行应用程序。我的 UWSGI 设置为生成 4 个并行进程来同时处理多个请求。现在,我有一个请求需要花费大量时间,并且会更改有关应用程序的重要数据。因此,当一个 UWSGI 进程正在处理该请求并说所有其他进程也很忙时,第五个请求将不得不等待。这里的问题是我无法更改此请求以在离线模式下运行,因为它会更改重要数据并且用户不能简单地保持未知状态。处理这种情况的最佳方法是什么?

最佳答案

作为一个选项,您可以执行以下操作:

  1. 将繁重的逻辑与正在调用的函数分开 在 @route 上并将其移动到一个单独的位置(一个文件,另一个 功能等)
  2. 引入 Celery 来运行那些繁重的逻辑 (它将在与 @route 修饰的函数不同的线程中进行处理)。 实现此目的的一种快速方法是使用 Redis 作为消息代理。
  3. 从@route-decorated中安排耗时的函数 Celery 中的函数(也可以传递参数)

这样,在整个函数执行时间内,HTTP 请求就不会被阻止。

关于python - 在 Flask-UWSGI 应用程序中处理耗时的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38072956/

相关文章:

python - 使用 typing.Literal 的正确方法是什么?

python - 更改 Canvas ScaledText 的背景颜色

python - 如何使用 app.config.from_envvar? ( flask )

php - fatal error : Class 'ZMQContext' not found ( but it is installed and works on the terminal )

node.js - Nginx X-Accel-Redirect 不适用于 node.js

javascript - 来自具有更改 IP 地址的机器的 JS 服务和 REST API

python-3.x - 无法解码作为 URL 参数传递的 "devanagari text"

python Selenium : WinError 10053 - host is shutting connection down

python - 如何使用 Tkinter 根据长度创建彩色线条?

docker - 502 Nginx无法连接到Gunicorn服务器