Python uwsgi后台处理程序是如何工作的?

Python uwsgi后台处理程序是如何工作的?,python,message-queue,uwsgi,task-queue,Python,Message Queue,Uwsgi,Task Queue,我需要一个任务队列,以便在不影响用户的情况下将一些繁重的操作移出uwsgi上下文。由于目前正在使用uwsgi,我认为可以使用uwsgi后台处理程序。我想知道它到底是怎么工作的?假脱机任务是否仍在其他uwsgi工作程序中执行?如果是,那么服务器仍然会过载,因为其他工作人员将忙于处理假脱机任务。有更好的选择吗?我正在使用python参考: 每个假脱机程序都是一个不同的进程,旨在运行以目录(假脱机目录)中的文件形式排队的任务。多个假脱机程序进程(每个uWSGI实例)可以位于同一假脱机目录上,以并行化任

我需要一个任务队列,以便在不影响用户的情况下将一些繁重的操作移出uwsgi上下文。由于目前正在使用uwsgi,我认为可以使用uwsgi后台处理程序。我想知道它到底是怎么工作的?假脱机任务是否仍在其他uwsgi工作程序中执行?如果是,那么服务器仍然会过载,因为其他工作人员将忙于处理假脱机任务。有更好的选择吗?我正在使用python参考:

每个假脱机程序都是一个不同的进程,旨在运行以目录(假脱机目录)中的文件形式排队的任务。多个假脱机程序进程(每个uWSGI实例)可以位于同一假脱机目录上,以并行化任务组,并且可以配置多个假脱机目录(以具有不同的任务组)

spooler方法是非常低级的,但不需要维护(最终删除任务只需管理一个文件),而且非常可靠

我所知道的python世界中唯一的选择(很可能是最常用的)是芹菜


否则,您可以依赖久负盛名的redis+守护进程线程方法,其中python线程使用redis中排队的任务。最终,您可以使用uWSGI mule(类似于工作线程,但没有外部访问)而不是线程来执行任务。

uWSGI后台处理程序是uWSGI中内置的队列管理器,其工作方式类似于打印/邮件系统。这种方法是非常低级的,但它确实是可靠的

Python最流行的队列是芹菜,它提供了广泛的任务管理选项和功能。不幸的是,基于芹菜的系统并不是最容易保持和运行的,当事情进展不顺利时,问题通常就不那么容易找到。您可以询问任何DevOps工程师关于芹菜的经验,但要准备好接受一些苛刻的话

幸运的是,有一个替代方案:uWSGI后台处理程序,这就是我们将在今天的文章中讨论的内容

uWSGI Spooler和芹菜之间的主要区别在于前者不需要任何附加组件(例如芹菜可能需要像Redis这样的存储系统),这将故障点减少了一半。任务可以存储在目录、外部目录或网络池中

因此,有一个“必读”参考列表: