本文主要是介绍celery 使用总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、推荐查看链接
celery详解
本人借鉴上面链接,成功配置好celery异步任务,感觉一些点总结的还算可以
2、个人celery配置config
# -*- coding: utf-8 -*-from kombu import Queue, Exchange# 设置Broker和backend
# BROKER_URL = 'redis://ip:6379/1' # 将数据存放到redis1数据库,redis默认有16个数据库
# CELERY_RESULT_BACKEND = 'redis://ip:6379/1'# 都存放到rabbitmq的好处就是,不用定期删除redis中的数据
BROKER_URL = 'amqp://mq_name:mq_passwd@ip:5672'
CELERY_RESULT_BACKEND = 'amqp://mq_name:mq_passwd@ip:5672'CELERY_TASK_SERIALIZER = 'json' # 任务序列化和反序列化使用json
CELERY_RESULT_SERIALIZER = 'json' # 结果序列化为json
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TIMEZONE = 'Asia/Shanghai'
CELERY_ENABLE_UTC = TrueCELERY_TASK_RESULT_EXPIRES = 60 * 60 * 24 # 后端存储任务超过一天,则自动清理数据,单位为秒
CELERYD_MAX_TASKS_PER_CHILD = 1000 # 每个worker最多执行1000个任务就会被销毁,可防止内存泄露CELERYD_PREFETCH_MULTIPLIER = 2CELERY_QUEUES = (Queue('default', Exchange('default'), routing_key='default'),Queue('process', Exchange('process'), routing_key='web', consumer_arguments={'x-priority': 0}),
)CELERY_DEFAULT_EXCHANGE = 'tasks' # 默认的交换机名字为tasks
CELERY_DEFAULT_EXCHANGE_TYPE = 'topic' # 默认的交换类型是topic
CELERY_DEFAULT_ROUTING_KEY = 'task.default' # 默认的路由键是task.default,这个路由键符合上面的default队列# 配置某个函数对应执行queue中值为route_key的数据
CELERY_ROUTES = {"project.tasks.get_haha": {"queue": "process","routing_key": "web",}
}
3、个人配置celery.py
# -*- coding: utf-8 -*-from __future__ import absolute_import, unicode_literals
from celery import Celery,platforms
import sysreload(sys)
sys.setdefaultencoding('utf8')app = Celery("project", include=['project.tasks'])
app.config_from_object('project.config')
platforms.C_FORCE_ROOT = Trueif __name__ == '__main__':app.start()
4、项目目录树
这篇关于celery 使用总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!