当我们使用@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