Python Celery多队列配置代码实例


Posted in Python onNovember 22, 2019

这篇文章主要介绍了Python Celery多队列配置代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Celery官方文档

项目结构

/proj
-__init__
-app.py            #实例化celery对象
-celeryconfig.py        #celery的配置文件
-tasks.py           #celery编写任务文件

app.py

#coding:utf-8
from __future__ import absolute_import
from celery import Celery

app = Celery('proj', include=['proj.tasks'])   #实例化celery对象

app.config_from_object('proj.celeryconfig')   #引入配置文件

if __name__ == '__main__':            
  app.start()
  • proj参数为celery的名字
  • include参数为启动时导入的模块列表

tasks.py

#coding:utf-8
from __future__ import absolute_import

from proj.app import app
@app.task()
def add(x, y):
  return x + y

celeryconfig.py

#coding:utf-8
from kombu import Queue

BROKER_URL = 'amqp://guest:guest@127.0.0.1:5672//' # 使用RabbitMQ作为消息代理


CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0' # 把任务结果存在了Redis

CELERY_TASK_SERIALIZER = 'msgpack' # 任务序列化和反序列化使用msgpack方案

CELERY_RESULT_SERIALIZER = 'json' # 读取任务结果一般性能要求不高,所以使用了可读性更好的JSON

CELERY_TASK_RESULT_EXPIRES = 60 * 60 * 24 # 任务过期时间,不建议直接写86400,应该让这样的magic数字表述更明显

CELERY_ACCEPT_CONTENT = ['json', 'msgpack'] # 指定接受的内容类型

CELERY_QUEUES = (  #设置add队列,绑定routing_key
  Queue('add', routing_key='xue.add'),
)


CELERY_ROUTES = {  #projq.tasks.add这个任务进去add队列并routeing_key为xue.add 
  'projq.tasks.add': { 
    'queue': 'add',
    'routing_key': 'xue.add',
  }
}
  • CELERY_ACCEPT_CONTENT的类型msgpack为是一种比json更小更快的类型,如果用需要安装相对应的包。
  • CELERY_QUEUES设置一个指定routing_key的队列,这个名字可以任意指定。
  • CELERY_ROUTES设置路由,对指定的任务名,指定对应的队列和routing_key,注意,这里的routing_key需要和上面参数的一致。

启动

在proj的上层目录输入

celery -A proj.app worker -Q add -l info

proj.tasks.add为任务名称,也就是在CELERY_ROUTES设置的那个名称

add是设置的queue,key=xue.add是设置的routing_key

发布任务

from proj.tasks import add
add.delay(2,3)

多队列中需要修改的地方

CELERY_QUEUES = (  #设置add队列,绑定routing_key
  Queue('add', routing_key='xue.add'),
)


CELERY_ROUTES = {  #projq.tasks.add这个任务进去add队列并routeing_key为xue.add 
  'projq.tasks.add': { 
    'queue': 'add',
    'routing_key': 'xue.add',
  }

配置两个队列

# 配置队列
CELERY_QUEUES = (
  Queue('default', routing_key='default'),
  Queue('队列1', routing_key='key1'),
  Queue('队列2', routing_key='key2'),
)
# 路由(哪个任务放入哪个队列)
CELERY_ROUTES = {
  '任务1': {'queue': '队列1', 'routing_key': 'key1'},
  '任务2': {'queue': '对列2', 'routing_key': 'key2'},
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python通过pil模块获得图片exif信息的方法
Mar 16 Python
详解Python的Django框架中Manager方法的使用
Jul 21 Python
pycharm重置设置,恢复默认设置的方法
Oct 22 Python
python 随机打乱 图片和对应的标签方法
Dec 14 Python
django的ORM模型的实现原理
Mar 04 Python
Django CBV类的用法详解
Jul 26 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
Jan 20 Python
Python 模拟生成动态产生验证码图片的方法
Feb 01 Python
python实现超级玛丽游戏
Mar 18 Python
4行Python代码生成图像验证码(2种)
Apr 07 Python
python Selenium 库的使用技巧
Oct 16 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
Mar 03 Python
python 协程 gevent原理与用法分析
Nov 22 #Python
python 并发下载器实现方法示例
Nov 22 #Python
使用python绘制二维图形示例
Nov 22 #Python
python将邻接矩阵输出成图的实现
Nov 21 #Python
python实现小世界网络生成
Nov 21 #Python
使用Python的networkx绘制精美网络图教程
Nov 21 #Python
利用Python绘制Jazz网络图的例子
Nov 21 #Python
You might like
thinkphp区间查询、统计查询与SQL直接查询实例分析
2014/11/24 PHP
PHP实现从远程下载文件的方法
2015/03/12 PHP
使用IE的地址栏来辅助调试Web页脚本
2007/03/08 Javascript
精解window.setTimeout()&window.setInterval()使用方式与参数传递问题!
2007/11/23 Javascript
基于jquery的返回顶部效果(兼容IE6)
2011/01/17 Javascript
js实现文章文字大小字号功能完整实例
2014/11/01 Javascript
javascript实现俄罗斯方块游戏的思路和方法
2015/04/27 Javascript
js光标定位文本框回车表单提交问题的解决方法
2015/05/11 Javascript
Js制作点击输入框时默认文字消失的效果
2015/09/05 Javascript
js中实现字符串和数组的相互转化详解
2016/01/24 Javascript
基于Javascript实现返回顶部按钮
2016/02/29 Javascript
vue mint-ui学习笔记之picker的使用
2017/10/11 Javascript
js的函数的按值传递参数(实例讲解)
2017/11/16 Javascript
nodejs实现爬取网站图片功能
2017/12/14 NodeJs
在vue里面设置全局变量或数据的方法
2018/03/09 Javascript
vue数据传递--我有特殊的实现技巧
2018/03/20 Javascript
微信小程序实现滴滴导航tab切换效果
2018/07/24 Javascript
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
2020/03/20 jQuery
antd-DatePicker组件获取时间值,及相关设置方式
2020/10/27 Javascript
[06:07]辉夜杯现场观众互动 “比谁远送显示器”
2015/12/26 DOTA
[01:16:37]【全国守擂赛】第三周决赛 Dark Knight vs. 一个弱队
2020/05/04 DOTA
Python基础知识_浅谈用户交互
2017/05/31 Python
Python清空文件并替换内容的实例
2018/10/22 Python
Python高级特性之闭包与装饰器实例详解
2019/11/19 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
2020/01/25 Python
python实现logistic分类算法代码
2020/02/28 Python
利用Python实现最小二乘法与梯度下降算法
2021/02/21 Python
Topman美国官网:英国著名的国际平价时尚男装品牌
2017/12/22 全球购物
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
初二学习计划书范文
2014/04/27 职场文书
大学生简短的自我评价
2014/09/12 职场文书
音乐教育专业自荐信
2014/09/18 职场文书
党员年终个人总结
2015/02/14 职场文书
婚育证明样本
2015/06/16 职场文书
工人先锋号事迹材料(2016精选版)
2016/03/01 职场文书
Ajax异步刷新功能及简单案例
2021/11/20 Javascript