安装celery
pip install "celery[librabbitmq,redis,msgpack]"
主文件celery.py
from __future__ import absolute_import
#拒绝隐式引入,因为celery.py和celery包名冲突
from celery import Celery
app = Celery('proj',include=['proj.task'])
#创建实例,添加task实例(也就是哪个包的哪个文件)
app.config_from_object('proj.celeryconfig')
#从celeryconfi.py加载配置
if __name__ == '__main__':
app.start()
模块文件task.py
from __future__ import absolute_import
from proj.celery import app
@app.task
#添加任务函数
def add(x,y):
return x + y
配置文件celeryconfig.py
BROKER_URL = 'amqp://changxin:123456@localhost:5672/web_develop'
#指明rabbitmq作为消息代理
CELERY_RESULT_BACKEND = 'redis://:vrarQht123@localhost:6379/0'
#将结果存储在redis
CELERY_TASK_SERIALIZER = 'msgpack'
#使用msgpack进行序列化和反序列化
CELERY_RESULT_SERIALIZER = 'json'
#使用json读取结果
CELERY_TASK_RESULT_EXPIRES = 60 * 60 *24
#任务过期时间
CELERY_ACCEPT_CONTENT = ['json','msgpack']
#指定接受的内容类型
CELERY_DEFAULT_QUEUE
#配置队列名,这里没有配置
/使用redis的url的格式为redis://:password@hostname:port/db_number/
celery使用redis
celery -A proj worker -l info
会默认寻找-A后面的模块里面的celery.py,但是使用celery做模块名并不好,可以使用其他名字,假如是proj/app.py
celery -A proj.app worker -l info
注意编码# -- coding: utf-8 --