如果我们用 .delay() 调用任务,芹菜任务何时执行

when celery task will be execute if we call task with .delay()

我的朋友们一直在谈论用 celery 完成耗时的任务。因为我没有计算机科学知识,所以我无法准确了解 celery 任务的执行时间。在 celery 文档中,在调用 .delay() 时谈论守护进程,但我找不到什么是守护进程,如果我们通过 .delay() 调用它,最后什么时候执行 celery 任务? :)

例如,如果我有下面的代码,什么时候 my_task 会被执行? function.py:

def test():
    my_task.delay()
    while second<10:
       second += 1 # assume this part take a second

1-恰好在 test() 函数完成时(test() 调用后约 10 秒)

2-在while loop

中间

3- 完成后 test() 并且请求不是太多并且服务器有时间和资源来完成任务!! (也许芹菜很聪明,知道执行任务的最佳时间)

4- 随时:)

5- 我没有指出的正确方法。 :)

如果它取决于配置,我必须告诉我我使用了 celery documentation.thank 你的默认配置。

想象一下,您不是单独执行此任务,而是执行多项任务。如果您使用 my_task.delay() 调用它,您会将所有这些任务放在一个队列中。现在有几个工人只选择第一个打开的任务并执行它们。

所以正确答案应该是 "Whenever the responsible worker is free"。这可能就在您进入 while second<10: 循环之前,但如果工作人员当前正忙,也可能需要几秒钟或几分钟。