[英]celery group runs tasks sequentially instead of in parallel
我在學習 celery 群 function
@celery_app.task
def celery_task():
import time
time.sleep(30)
print('task 1')
@celery_app.task
def celery_task2():
import time
time.sleep(10)
print('task 2')
@celery_app.task
def test():
from datetime import datetime
print(datetime.now())
job = group(
celery_task.s(),
celery_task2.s()
)
result = job()
result.get()
print(datetime.now())
但是,當我從 python 控制台運行test()
並在 celery 日志中查看它們時,似乎運行了 task1 然后運行了 task2。
它不應該並行運行嗎? 整個test()
function 花了 30s 完成
要啟動我的 celery 工作人員,我使用命令celery -A tasks worker -l=INFO
你確定整個test()
花了 30 秒嗎? 如果是這樣,我不明白有什么問題? 如果它不是平行的 - 它必須花費 30s+10s=40s。
這里有兩件事:
--concurrency
標志,以便它可以處理多個任務。 或者,使用多個工作人員(運行兩個進程): celery -A tasks worker -l=INFO --concurrency=4
(我不確定默認值是什么 - 我猜這是一個)。job.delay()
或job. apply_async()
job. apply_async()
運行異步。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.