【问题标题】:Call Django celery task by name按名称调用 Django celery 任务
【发布时间】:2013-10-14 20:54:53
【问题描述】:

我需要从models.py调用一个芹菜任务(在tasks.py中),唯一的问题是tasks.py导入models.py,所以我不能从models.py导入tasks.py。

有什么方法可以简单地使用它的名称来调用 celery 任务,而无需导入它?出于同样的原因(防止循环导入),ForeignKey 字段也实现了类似的功能。

【问题讨论】:

  • 你试过celery.execute.send_task('mod.task_func', [arg1, arg2], {kwarg: kwvalue})吗?

标签: python django celery


【解决方案1】:

是的,有。

你可以使用:

from celery.execute import send_task    

send_task('my_task', [], kwargs)

确保你的任务函数有一个名字:

from celery import task

@task(name='my_task')
def my_task():
     ...

希望对你有帮助!

【讨论】:

    【解决方案2】:

    在 Celery 3+ 中:

    from celery import Celery
    
    app = Celery()
    app.send_task('my_task', [], kwargs)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-30
      • 2013-03-12
      • 2011-06-19
      • 1970-01-01
      • 2018-05-03
      • 2019-07-02
      • 2020-12-16
      • 2019-11-08
      相关资源
      最近更新 更多