我在为Django配置芹菜方面有问题。
我就是这样开始姜戈芹菜的:
python manage.py celery worker --autoscale=10,2任务示例:
@task
def test(i):
print "ITERATION {} START".format(i)
time.sleep(10)
print "ITERATION {} END".format(i)
return True我把这项任务称为:
for i in range(10):
test.delay(i)我期望发生的是,如果我发送10个任务到队列,10个进程应该打开-每个任务一个。
实际发生的情况是随机启动的进程数,通常是4个和在这4个任务完成之后--、另外3个开始和完成之后的,另外3个开始。即使是完成时间较长的任务,如2分钟,也会发生这种情况。
有人能解释一下这种行为吗?如果自动上限允许,我如何立即启动所有任务?
此外,尽管自动规模的下限为2,但当服务器启动时,将运行3个进程。为什么会这样呢?
平台: OpenWRT,双核处理器,2GB内存.
发布于 2017-03-01 07:01:34
芹菜在默认情况下为每个核心创建一个工人,所以我假设您是在一个有4个核心的机器上运行。您可以使用标志--concurrency (参见文档 )来配置它以获得更多详细信息。
在此之后,您说了3个进程开始,然后又有2个进程等等,一个任务只会在另一个进程完成后启动,而且由于预取策略有时也会被延迟。有关更多细节,您可以看到这条线。
芹菜启动一个主过程,X个工人--主流程管理工人,在需要时重新启动他们,并将任务分派给工人。因此,如果你有2个工人-你将有3个过程。
https://stackoverflow.com/questions/42489134
复制相似问题