通过查看创建芹菜任务的不同方法,我感到非常困惑。从表面上看,它们都是一样的,所以,有人可以解释一下两者之间的区别吗。
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
。有人可以详细说明一下,什么时候使用第二个?
答案 0 :(得分:1)
除非您正在使用celery v3,否则请不要使用#2。如果您使用的是celery v4,请使用#1。
在编写可重用库或Django应用程序的实例中使用#3。例如,如果您正在编写一组开源任务,允许您使用celery管理aws ec2实例,则可以使用shared_task
以便可以在celery上运行这些任务,但是您可以将其留给个人使用您的资料库为自己配置芹菜。
如果您要编写自己的项目,而不必担心重复使用,请使用#1。