如果我们用 .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:
循环之前,但如果工作人员当前正忙,也可能需要几秒钟或几分钟。
我的朋友们一直在谈论用 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:
循环之前,但如果工作人员当前正忙,也可能需要几秒钟或几分钟。