首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >芹菜并发设置: CELERYD_CONCURRENCY和CELERYD_PREFETCH_MULTIPLIER

芹菜并发设置: CELERYD_CONCURRENCY和CELERYD_PREFETCH_MULTIPLIER
EN

Stack Overflow用户
提问于 2016-01-18 00:53:53
回答 1查看 3.7K关注 0票数 1

我对CELERYD_CONCURRENCYCELERYD_PREFETCH_MULTIPLIER有疑问

因为我的英语不太懂官方网站的描述,

我想确定一下

我设定了CELERYD_CONCURRENCY=40,我想它会用40个工人来做事情

但我通常看到INFO/MainProcess,很少看到INFO/Worker-n

是因为任务快,所以不需要分配给工人吗??

下面是一个任务架构:

我有一个period_task是芹菜period_task,mail_it是普通芹菜任务

代码语言:javascript
复制
@shared_task
def period_task():
    do_something()
    ....
    for mail in mail_list:
        mail_it.delay(mail)

第二个问题是CELERYD_PREFETCH_MULTIPLIER,默认值是4

这是否意味着每个员工可以一次从队列中得到4个任务?所以我有40名工人,我可以得到40*4项任务?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-18 02:24:41

我的理解是:

CELERYD_CONCURRENCY:这是给定工作人员将拥有的线程/GREENTHREADS的数量。芹菜称这些为“过程”。这是单个员工可以并行执行的任务数。我相信芹菜在内部创造了这个数字加一个,另外一个是实际管理/分配给其他人的(在你的例子中,有40个!)根据我的经验,您可能不需要/不需要40 (接近每CPU 1或2),但是您的里程可能会有所不同。

CELERYD_PREFETCH_MULTIPLIER: Prefetch是根据文档为每个“进程”保留多少任务。它有点像一个迷你队列,只用于特定的线程。这实际上意味着你的一名刚开始工作的人可能会“保留”40 *4项任务。请记住,这些保留的任务不能被“窃取”,也不能发送给其他工作人员或线程,因此如果这些任务运行时间较长,您可能希望禁用此功能,以使速度更快的站点能够清除速度较慢的任务。

如果在当前的设置中这一点不清楚,我可能建议在任务中添加task (),以便能够观察它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34845715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档