创建芹菜任务的不同方法之间的区别

时间:2019-02-03 19:11:46

标签: python django celery django-celery celery-task

通过查看创建芹菜任务的不同方法,我感到非常困惑。从表面上看,它们都是一样的,所以,有人可以解释一下两者之间的区别吗。

1。

from myproject.tasks import app

@app.task
def foo():
    pass

2。

from celery import task

@task
def foo():
    pass

3。

from celery import import shared_task

@shared_task
def foo():
    pass

通过一点点的搜索,我知道当您没有具体的应用程序实例时,会使用第一个和第三个之间的差异shared_task。有人可以详细说明一下,什么时候使用第二个?

1 个答案:

答案 0 :(得分:1)

除非您正在使用celery v3,否则请不要使用#2。如果您使用的是celery v4,请使用#1。

在编写可重用库或Django应用程序的实例中使用#3。例如,如果您正在编写一组开源任务,允许您使用celery管理aws ec2实例,则可以使用shared_task以便可以在celery上运行这些任务,但是您可以将其留给个人使用您的资料库为自己配置芹菜。

如果您要编写自己的项目,而不必担心重复使用,请使用#1。