首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >芹菜多工序的启动

芹菜多工序的启动
EN

Stack Overflow用户
提问于 2017-02-27 15:09:54
回答 1查看 3.1K关注 0票数 2

我在为Django配置芹菜方面有问题。

我就是这样开始姜戈芹菜的:

代码语言:javascript
复制
python manage.py celery worker --autoscale=10,2

任务示例:

代码语言:javascript
复制
@task
def test(i):
    print "ITERATION {} START".format(i)
    time.sleep(10)
    print "ITERATION {} END".format(i)
    return True

我把这项任务称为:

代码语言:javascript
复制
for i in range(10):
    test.delay(i)

我期望发生的是,如果我发送10个任务到队列,10个进程应该打开-每个任务一个。

实际发生的情况是随机启动的进程数,通常是4个和在这4个任务完成之后--、另外3个开始和完成之后的,另外3个开始。即使是完成时间较长的任务,如2分钟,也会发生这种情况。

有人能解释一下这种行为吗?如果自动上限允许,我如何立即启动所有任务?

此外,尽管自动规模的下限为2,但当服务器启动时,将运行3个进程。为什么会这样呢?

平台: OpenWRT,双核处理器,2GB内存.

EN

回答 1

Stack Overflow用户

发布于 2017-03-01 07:01:34

芹菜在默认情况下为每个核心创建一个工人,所以我假设您是在一个有4个核心的机器上运行。您可以使用标志--concurrency (参见文档 )来配置它以获得更多详细信息。

在此之后,您说了3个进程开始,然后又有2个进程等等,一个任务只会在另一个进程完成后启动,而且由于预取策略有时也会被延迟。有关更多细节,您可以看到这条线

芹菜启动一个主过程,X个工人--主流程管理工人,在需要时重新启动他们,并将任务分派给工人。因此,如果你有2个工人-你将有3个过程。

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

https://stackoverflow.com/questions/42489134

复制
相关文章

相似问题

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