我在爲Django配置Celery時遇到了問題。在Celery中啓動多個進程
我這是怎麼開始的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個任務完成,另外3開始和通常爲4和後,他們完成後,另外3開始。甚至對於完成時間較長的任務也會發生這種情況,例如2分鐘。
有人可以解釋這種行爲嗎?如果自動縮放上限允許,我如何立即開始所有任務?
此外,儘管autoscale的下限爲2,但在服務器啓動時,有3個進程運行。這是爲什麼?
平臺:OpenWRT雙核處理器,2GB RAM。
您可能想要檢查celery環境中的併發設置,看看這是否是限制任務。 – postoronnim