uwsgi spooler怎么用?

问题描述 投票:7回答:2

我需要一个任务队列,这样可以把一些繁重的操作移出uwsgi上下文,而不影响用户。因为目前正在使用uwsgi,所以我觉得可以使用uwsgi spooler。我想知道它的具体工作原理是什么?spooled任务是否还在其他uwsgi worker中执行?如果是,那么服务器仍然会过载,因为其他worker会忙于服务spooled任务。是否有更好的替代方案?我正在使用python

python message-queue uwsgi task-queue
2个回答
6
投票

参考文献。http:/uwsgi-docs.readthedocs.orgenlatestSpooler.html。

每一个spooler都是一个不同的进程,目的是运行在一个目录(spool目录)中以文件形式排队的任务。多个spooler进程(每个uWSGI-instance)可以坐在同一个spool dir上,以并行化任务组,并且可以配置多个spooldirs(有不同的任务组)。

spooler的方法非常低级,但需要零维护(最终删除任务只是一个rm'ing文件的问题),它真的很可靠。

据我所知,Python世界中唯一的替代方案(也可能是最常用的方案)是芹菜。

http:/www.celeryproject.org

否则你可以依靠古老的 redis + daemon 线程的方法,即一个 python 线程消耗 redis 中的任务。最终,你可以使用uWSGI mule(它就像一个worker,但没有外部访问)来代替线程消耗任务。


0
投票

这个 uWSGI转轴 是一个内置在uWSGI中的队列管理器,它的工作方式就像一个打印邮件系统。这种方法非常低级,但它真的很可靠。

Python最流行的队列是Celery,它提供了广泛的任务管理选项和能力。不幸的是,基于Celery的系统并不是最容易保持和运行的,当一些事情不尽如人意的时候,问题通常不是那么容易找到。你可以向任何DevOps工程师询问他们使用Celery的经验,但要准备好接受一些严厉的言辞。

幸运的是,还有一个替代方案:uWSGI Spooler,这就是我们今天文章要讲的内容。

uWSGI Spooler与芹菜的主要区别。 是前者不需要任何额外的组件(比如Celery可能需要Redis这样的存储系统),这就将故障点的数量减少了一半。任务可以存储在目录、外部目录或网络池中。

所以,有一个 "必读 "的Reference list。

© www.soinside.com 2019 - 2024. All rights reserved.