Celery的使用

安装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 --

你可能感兴趣的:(python,python)