Django中使用celery
celery实例创建
注意
以前版本的Celery需要一个单独的库才能与Django一起使用,但是从3.1开始,情况不再如此。现成的支持Django,因此本文档仅包含集成Celery和Django的基本方法。您将使用与非Django用户相同的API,因此建议您先阅读“ 使用Celery的第一步”教程,然后再返回本教程。当您有可用的示例时,可以继续阅读“ 下一步”指南。
注意
Celery 4.0支持Django 1.8和更高版本。对于Django 1.8之前的版本,请使用Celery 3.1。
要将Celery与Django项目一起使用,您必须首先定义Celery库的实例(称为“应用”)
如果您拥有现代的Django项目布局,例如:
- proj/
- manage.py
- proj/
- __init__.py
- settings.py
- urls.py
那么建议的方法是创建一个新的proj / proj / celery.py模块,该模块定义Celery实例:
文件:proj/proj/celery.py
# 导入future 模块,让我们的celery.py 不会与其他类库产生冲突。
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
# 在celery应用中加载Django的配置
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')
# 实例化celery对象
app = Celery(
'proj',
# 使用redis的1号库作为消息列队
broker="redis://127.0.0.1:6379/1",
# 使用redis的2号库存储任务结果
backend="redis://127.0.0.1:6379/2",
)
# 把celery的配置放到django的settings配置文件中
# 此处的参数你可以传递对象,但是建议字符串,这样使用windows 或execv 的时候,无需序列化对象。
# - namespace='CELERY' 表示所有celery相关的配置参数需要添加`CELERY_` 前缀
app.config_from_object('django.conf:settings', namespace='CELERY')