簡體   English   中英

celery 組按順序而不是並行運行任務

[英]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。

這里有兩件事:

  1. 運行工作程序時使用--concurrency標志,以便它可以處理多個任務。 或者,使用多個工作人員(運行兩個進程): celery -A tasks worker -l=INFO --concurrency=4 (我不確定默認值是什么 - 我猜這是一個)。
  2. 使用job.delay()job. apply_async() job. apply_async()運行異步。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM