【问题标题】:How to stop Celery task callbacks?如何停止 Celery 任务回调?
【发布时间】:2017-02-02 10:41:03
【问题描述】:

我有 3 个这样的芹菜任务:

@app.task
def main_func():
    if this:
        func1.delay()
    else:
        func2.delay()

@app.task
def func1():
    ... do something ...

@app.task
def func2():
    ... do something ...

函数 main_func 计划每 30 秒执行一次。如果满足某些条件,则调用func1 的芹菜任务,否则为func2 创建任务。

现在,当我运行 celery worker 并执行函数 main_func 时,它会再次使用 func1func2 调用自身,从而导致循环。

现在在日志中,任务在连续执行之间应该有 30 秒的时间差,但由于循环,它们会继续一个接一个地执行。

如何防止这种情况发生?

注意:我使用的是 celery 4.0.2

【问题讨论】:

    标签: python celery


    【解决方案1】:

    用途:

    celery.current_app.send_task('mymodel.tasks.mytask', args=[arg1, arg2, arg3])
    

    current_app 是 celery 模块的属性。 mymodel.tasks 是您的tasks.py 的路径

    【讨论】:

      猜你喜欢
      • 2019-08-15
      • 2012-04-28
      • 2012-06-06
      • 2020-12-25
      • 1970-01-01
      • 2013-12-12
      • 2016-07-23
      • 2016-08-26
      • 2012-04-12
      相关资源
      最近更新 更多