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 相关文章推荐
关于Django显示时间你应该知道的一些问题
Dec 25 Python
python2.7+selenium2实现淘宝滑块自动认证功能
Feb 24 Python
简单谈谈python基本数据类型
Sep 26 Python
Python生成rsa密钥对操作示例
Apr 26 Python
使用Python实现跳帧截取视频帧
May 31 Python
python笔记之mean()函数实现求取均值的功能代码
Jul 05 Python
Win10环境python3.7安装dlib模块趟过的坑
Aug 01 Python
Python使用matplotlib绘制Logistic曲线操作示例
Nov 28 Python
python实现矩阵和array数组之间的转换
Nov 29 Python
py-charm延长试用期限实例
Dec 22 Python
在python里创建一个任务(Task)实例
Apr 25 Python
python中如何写类
Jun 29 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
PHP array 的加法操作代码
2010/07/24 PHP
yii2超好用的日期组件和时间组件
2016/05/05 PHP
文档对象模型DOM通俗讲解
2013/11/01 Javascript
js判断60秒以及倒计时示例代码
2014/01/24 Javascript
提高NodeJS中SSL服务的性能
2014/07/15 NodeJs
javascript检查浏览器是否已经启用XX功能
2015/07/10 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
2015/09/09 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
2016/08/15 Javascript
jquery.validate[.unobtrusive]和Bootstrap实现tooltip错误提示问题分析
2016/10/30 Javascript
ES6概念 Symbol.keyFor()方法
2016/12/25 Javascript
vue项目中使用scss的方法步骤
2019/05/16 Javascript
JavaScript怎样在删除前添加确认弹出框?
2019/05/27 Javascript
如何让微信小程序页面之间的通信不再变困难
2019/06/03 Javascript
js实现数字滚动特效
2019/12/16 Javascript
浅析vue cli3 封装Svgicon组件正确姿势(推荐)
2020/04/27 Javascript
Python中的并发编程实例
2014/07/07 Python
Python实现的数据结构与算法之队列详解
2015/04/22 Python
python3抓取中文网页的方法
2015/07/28 Python
使用Python生成随机密码的示例分享
2016/02/18 Python
python实现汉诺塔递归算法经典案例
2021/03/01 Python
numpy.delete删除一列或多列的方法
2018/04/03 Python
Python从单元素字典中获取key和value的实例
2018/12/31 Python
Python如何获得百度统计API的数据并发送邮件示例代码
2019/01/27 Python
Python 在OpenCV里实现仿射变换—坐标变换效果
2019/08/30 Python
Python中Flask-RESTful编写API接口(小白入门)
2019/12/11 Python
python FTP批量下载/删除/上传实例
2019/12/22 Python
构建高效的python requests长连接池详解
2020/05/02 Python
sqlalchemy实现时间列自动更新教程
2020/09/02 Python
Python制作一个仿QQ办公版的图形登录界面
2020/09/22 Python
详解HTML5中的标签
2015/06/19 HTML / CSS
Spartoo美国:欧洲排名第一的在线时装零售商
2019/12/12 全球购物
质检部经理岗位职责
2014/02/19 职场文书
幼儿园教师安全责任书
2015/05/08 职场文书
入党群众意见范文
2015/06/02 职场文书
村官2015年度工作总结
2015/10/14 职场文书
使用 JavaScript 制作页面效果
2021/04/21 Javascript