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实现多线程下载文件的代码实例
Jun 01 Python
Python变量和数据类型详解
Feb 15 Python
python django使用haystack:全文检索的框架(实例讲解)
Sep 27 Python
Python 2.7中文显示与处理方法
Jul 16 Python
Python编写合并字典并实现敏感目录的小脚本
Feb 26 Python
解决python3 requests headers参数不能有中文的问题
Aug 21 Python
Python中生成一个指定长度的随机字符串实现示例
Nov 06 Python
python 二维矩阵转三维矩阵示例
Nov 30 Python
Python range与enumerate函数区别解析
Feb 28 Python
利用Python实现某OA系统的自动定位功能
May 27 Python
Windows下Sqlmap环境安装教程详解
Aug 04 Python
python进度条显示-tqmd模块的实现示例
Aug 23 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 daodb插入、更新与删除数据
2009/03/19 PHP
一个经典的PHP文件上传类分享
2014/11/18 PHP
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
2010/01/22 Javascript
js禁止document element对象选中文本实现代码
2013/03/21 Javascript
jquery中的ajax方法怎样通过JSONP进行远程调用
2014/05/04 Javascript
使用Plupload实现直接上传附件至七牛云存储
2014/12/26 Javascript
js+html5实现页面可刷新的倒计时效果
2017/07/15 Javascript
nodejs 搭建简易服务器的图文教程(推荐)
2017/07/18 NodeJs
angularjs实现天气预报功能
2020/06/16 Javascript
利用百度地图API获取当前位置信息的实例
2017/11/06 Javascript
详解Nodejs mongoose
2018/06/10 NodeJs
jQuery easyui datagird编辑行删除行功能的实现代码
2018/09/20 jQuery
发布订阅模式在vue中的实际运用实例详解
2019/06/09 Javascript
js笔试题-接收get请求参数
2019/06/15 Javascript
uni-app 支持多端第三方地图定位的方法
2020/01/03 Javascript
[01:23]2014DOTA2国际邀请赛 球迷无处不在Ti现场世界杯受关注
2014/07/10 DOTA
Python 执行字符串表达式函数(eval exec execfile)
2014/08/11 Python
Python实现的质因式分解算法示例
2018/05/03 Python
python绘制漏斗图步骤详解
2019/03/04 Python
Ubuntu下Anaconda和Pycharm配置方法详解
2019/06/14 Python
python中的decimal类型转换实例详解
2019/06/26 Python
pytorch 获取层权重,对特定层注入hook, 提取中间层输出的方法
2019/08/17 Python
属性与 @property 方法让你的python更高效
2020/09/21 Python
Python爬取微信小程序通用方法代码实例详解
2020/09/29 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
2021/03/03 Python
html5实现多文件的上传示例代码
2014/02/13 HTML / CSS
推荐10个HTML5响应式框架
2016/02/25 HTML / CSS
美国最大的无人机经销商:DroneNerds
2018/03/20 全球购物
学习雷锋寄语大全
2014/04/11 职场文书
投资协议书范本
2014/04/21 职场文书
团支部建设方案
2014/05/02 职场文书
环保志愿者活动总结
2014/06/27 职场文书
2014年施工员工作总结
2014/11/18 职场文书
个人求职自荐信范文
2015/03/06 职场文书
六一亲子活动感想
2015/08/07 职场文书
Python中OpenCV实现简单车牌字符切割
2021/06/11 Python