我对创建芹菜任务的不同方法感到非常困惑。从表面上看,它们的工作方式都相同 所以,有人可以解释一下这些之间有什么区别吗?
1.
from myproject.tasks import app
@app.task
def foo():
pass
阿拉伯数字。
from celery import task
@task
def foo():
pass
3.
from celery import shared_task
@shared_task
def foo():
pass
通过一点点谷歌搜索,我知道第一个和第 3 个之间的区别是shared_task
当你没有具体的应用程序实例时使用。有人可以详细说明一下,什么时候使用第二个?
除非使用的是 celery v3,否则不要使用 #2。 如果您使用的是芹菜 v4,请使用 #1。
在编写可重用库或 django 应用程序的情况下使用 #3。 例如,如果您正在编写一组开源任务,允许您使用 Celery 管理 aws ec2 实例,则可以使用 shared_task
以便任务可以在 celery 上运行,但您将将其留给使用您的库的人为自己配置 celery。
如果您正在为自己的项目编写并且不担心重用,请使用 #1。