Celery是个好东西,在Django项目中执行异步或定时任务大概率要用到它。小编结合自己平时经验和网上文档东拼西凑了篇文章,希望对大家有所帮助。
1. Windows中使用Celery 4.0及以后版本
Celery 4.0+及以后版本不支持在windows系统上运行。如果你希望在windows系统上使用celery, 有两种方法。
方法一:安装3.1.25版本
pip install celery==3.1.25
方法二:安装gevent
pip install gevent# 启动workercelery -A worker -l info -P gevent
2. @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_importfrom celery import shared_task@shared_taskdef add(x, y): return x + y