是否可以为芹菜中的每个队列分别设置“工人预取乘数”?

2024-05-23 19:38:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道是否可以为队列设置不同的预取乘数

我有两个队列,一个运行时间很短,另一个稍长。较短任务的队列需要优先于其他任务

为确保优先级排序工作可靠,必须在芹菜配置中设置:

task_acks_late = True
worker_prefetch_multiplier = 1

然而,这确实会影响快速任务队列的性能。是否可以配置为,如果工作进程从快速任务队列中提取,worker_prefetch_multiplier是4,如果工作进程从慢速任务队列中提取,Mworker_prefetch_multiplier是1


Tags: truetask排序队列进程时间性能芹菜
1条回答
网友
1楼 · 发布于 2024-05-23 19:38:12

我不确定是否可以在the Celery documentation seems to set these limits per worker之后为每个队列定义不同的预取限制

但是,我们通过为每个队列启动不同的工作进程来解决此问题。您可以为每个工作进程定义不同的预取限制-如果一个工作进程只使用一个队列,那么您也可以为每个队列定义不同的预取限制以及工作进程并发性。这还有一个额外的好处,即长时间运行的任务不会阻塞短时间运行任务的辅助处理时间。 如果您考虑使用celery-batches进一步加快短时间运行任务的处理速度,那么将队列分成不同的工作线程就变得更加重要,因为您希望为该工作线程定义相当高的预取限制(注意:如果预取限制为0,并且队列非常满,那么最终将耗尽内存)

在我们的例子中,我们在一个连续化的环境中运行我们的工作者。这使我们能够为每个工作者/队列定义独立的资源分配(内存/cpu)

相关问题 更多 >