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最长公共子串算法实例
Mar 07 Python
编写Python爬虫抓取暴走漫画上gif图片的实例分享
Apr 20 Python
Django处理文件上传File Uploads的实例
May 28 Python
用python统计代码行的示例(包括空行和注释)
Jul 24 Python
python之验证码生成(gvcode与captcha)
Jan 02 Python
python实现简单银行管理系统
Oct 25 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
Mar 02 Python
Python基于进程池实现多进程过程解析
Apr 30 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
Jul 03 Python
python opencv角点检测连线功能的实现代码
Nov 24 Python
在PyCharm中安装PaddlePaddle的方法
Feb 05 Python
Python学习之包与模块详解
Mar 19 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
Admin generator, filters and I18n
2011/10/06 PHP
PHP中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
46 个非常有用的 PHP 代码片段
2016/02/16 PHP
PHP 数组基本操作方法详解
2016/06/17 PHP
Laravel中9个不经常用的小技巧汇总
2019/04/16 PHP
Aster vs KG BO3 第三场2.18
2021/03/10 DOTA
Javascript this 的一些学习总结
2012/08/02 Javascript
javascipt匹配单行和多行注释的正则表达式
2013/11/20 Javascript
在页面上用action传递参数到后台出现乱码的解决方法
2013/12/31 Javascript
html文本框提示效果的示例代码
2014/06/28 Javascript
JavaScript中实现PHP的打乱数组函数shuffle实例
2014/10/11 Javascript
总结JavaScript设计模式编程中的享元模式使用
2016/05/21 Javascript
JavaScript动态数量的文件上传控件
2016/11/18 Javascript
jQuery实现div跟随鼠标移动
2020/08/20 jQuery
详细分析JS函数去抖和节流
2017/12/05 Javascript
vue通过点击事件读取音频文件的方法
2018/05/30 Javascript
JS实现求5的阶乘示例
2019/01/21 Javascript
Python中转换角度为弧度的radians()方法
2015/05/18 Python
Python简单计算文件夹大小的方法
2015/07/14 Python
Python 序列的方法总结
2016/10/18 Python
Python查找文件中包含中文的行方法
2018/12/19 Python
python实现给微信指定好友定时发送消息
2019/04/29 Python
Python面向对象实现方法总结
2020/08/12 Python
世界上最大的家庭自动化公司:Smarthome
2017/12/20 全球购物
Quiksilver荷兰官方网站:冲浪和滑雪板
2019/11/16 全球购物
机电一体化专业应届本科生求职信
2013/09/27 职场文书
体育教育毕业生自荐信
2013/11/21 职场文书
应届生自我鉴定
2013/12/11 职场文书
旅游市场营销方案
2014/03/09 职场文书
国际金融专业自荐信
2014/07/05 职场文书
催款律师函范文
2015/05/27 职场文书
停发工资证明范本
2015/06/12 职场文书
2016年学习贯彻十八届五中全会精神心得体会
2016/01/05 职场文书
python四种出行路线规划的实现
2021/06/23 Python
关于PostgreSQL JSONB的匹配和交集问题
2021/09/14 PostgreSQL
python代码实现扫码关注公众号登录的实战
2021/11/01 Python