我想知道是否可以为队列设置不同的预取乘数
我有两个队列,一个运行时间很短,另一个稍长。较短任务的队列需要优先于其他任务
为确保优先级排序工作可靠,必须在芹菜配置中设置:
task_acks_late = True
worker_prefetch_multiplier = 1
然而,这确实会影响快速任务队列的性能。是否可以配置为,如果工作进程从快速任务队列中提取,worker_prefetch_multiplier
是4,如果工作进程从慢速任务队列中提取,Mworker_prefetch_multiplier
是1
Tags:
我不确定是否可以在the Celery documentation seems to set these limits per worker之后为每个队列定义不同的预取限制
但是,我们通过为每个队列启动不同的工作进程来解决此问题。您可以为每个工作进程定义不同的预取限制-如果一个工作进程只使用一个队列,那么您也可以为每个队列定义不同的预取限制以及工作进程并发性。这还有一个额外的好处,即长时间运行的任务不会阻塞短时间运行任务的辅助处理时间。 如果您考虑使用celery-batches进一步加快短时间运行任务的处理速度,那么将队列分成不同的工作线程就变得更加重要,因为您希望为该工作线程定义相当高的预取限制(注意:如果预取限制为0,并且队列非常满,那么最终将耗尽内存)
在我们的例子中,我们在一个连续化的环境中运行我们的工作者。这使我们能够为每个工作者/队列定义独立的资源分配(内存/cpu)
相关问题 更多 >
编程相关推荐