创建芹菜任务的不同方法之间的差异

问题描述 投票:7回答:1

我对查看芹菜任务的不同方式感到非常困惑。从表面上看,它们的工作原理都是一样的,所以,有人可以解释一下两者之间的区别是什么。

1。

from myproject.tasks import app

@app.task
def foo():
    pass

2。

from celery import task

@task
def foo():
    pass

3。

from celery import shared_task

@shared_task
def foo():
    pass

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

python django celery django-celery celery-task
1个回答
3
投票

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

在编写可重用的库或Django应用的实例中使用#3。例如,如果要编写一个开放源代码的任务集,使您可以使用celery管理aws ec2实例,则可以使用shared_task,以便可以在celery上运行这些任务,但是您可以将其留给使用库自己配置芹菜。

如果您是为自己的项目编写代码,则无需使用#1,而不必担心重复使用。

© www.soinside.com 2019 - 2024. All rights reserved.