如果我们使用.delay()

时间:2019-07-16 05:27:56

标签: python django 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文档中的默认配置。谢谢。

1 个答案:

答案 0 :(得分:3)

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

所以正确的答案是 “只要负责任的工人有空”。这可能就在您进入while second<10:循环之前,但如果工作人员当前很忙,则可能还需要几秒钟或几分钟。