celery中 @app.task与@shared.task 的区别
当我们使用@app.task装饰器定义我们的异步任务时,那么这个任务依赖于根据项目名myproject生成的Celery实例。
app = Celery('myproject')
@app.task(bind=True)
def debug_task(self):
print('Request: {0!r}'.format(self.request))
然而我们在进行Django开发时为了保证每个app的可重用性,我们经常会在每个app文件夹下编写异步任务,这些任务并不依赖于具体的Django项目名。使用@shared_task 装饰器能让我们避免对某个项目名对应Celery实例的依赖,使app的可移植性更强。
from __future__ import absolute_import
from celery import shared_task
@shared_task
def add(x, y):
return x + y
浙公网安备 33010602011771号