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

时间:2016-06-28 09:56:33

标签: python nginx flask uwsgi

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

1 个答案:

答案 0 :(得分:1)

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

  1. 将重逻辑与正在调用的函数分开 在@route上并将其移动到一个单独的位置(一个文件,另一个 功能等)
  2. 介绍Celery来运行那些沉重的逻辑 (它将在@ route-decorated函数的单独线程中处理)。 快速执行此操作的方法是使用Redis作为消息代理。
  3. 从@ route-decorated安排耗时的功能 Celery中的函数(也可以传递参数)
  4. 这样,在完整的函数执行时间内不会阻止HTTP请求。