【问题标题】:when celery task will be execute if we call task with .delay()如果我们使用 .delay() 调用任务,何时执行 celery 任务
【发布时间】:2019-11-24 19:03:48
【问题描述】:

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

例如,如果我在执行 my_task 时有以下代码?函数.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 文档中的默认配置。谢谢。

【问题讨论】:

    标签: python django celery


    【解决方案1】:

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

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

    【讨论】:

    • 这可能很明显,但我们应该注意,我们至少需要一名可用的工作人员来确保任务完全执行......
    猜你喜欢
    • 2020-12-14
    • 2021-12-20
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    • 2013-12-22
    • 2014-10-23
    相关资源
    最近更新 更多