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每次处理固定个数的字符的方法总结
Jan 29 Python
python打开url并按指定块读取网页内容的方法
Apr 29 Python
python更新列表的方法
Jul 28 Python
numpy实现合并多维矩阵、list的扩展方法
May 08 Python
python判断列表的连续数字范围并分块的方法
Nov 16 Python
对python3 sort sorted 函数的应用详解
Jun 27 Python
全面了解django的缓存机制及使用方法
Jul 22 Python
Django框架之DRF 基于mixins来封装的视图详解
Jul 23 Python
详解程序意外中断自动重启shell脚本(以Python为例)
Jul 26 Python
Python抓新型冠状病毒肺炎疫情数据并绘制全国疫情分布的代码实例
Feb 05 Python
PyTorch: Softmax多分类实战操作
Jul 07 Python
如何基于python实现年会抽奖工具
Oct 20 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
程序员编程十条戒律
2009/07/09 PHP
PHP数组无限分级数据的层级化处理代码
2012/12/29 PHP
phpmyadmin出现Cannot start session without errors问题解决方法
2014/08/14 PHP
PHP过滤黑名单关键字的方法
2014/12/01 PHP
PHP学习笔记(一):基本语法之标记、空白、和注释
2015/04/17 PHP
php基于PDO实现功能强大的MYSQL封装类实例
2017/02/27 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
2020/04/20 PHP
jQuery 获取对象 基本选择与层级
2010/05/31 Javascript
40款非常有用的 jQuery 插件推荐(系列一)
2011/12/21 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
浅谈Jquery核心函数
2015/06/18 Javascript
全面解析Bootstrap表单使用方法(表单控件状态)
2015/11/24 Javascript
js实现随机抽选效果、随机抽选红色球效果
2017/01/13 Javascript
js实现图片360度旋转
2017/01/22 Javascript
vue中使用input[type="file"]实现文件上传功能
2018/09/10 Javascript
详解使用angular框架离线你的应用(pwa指南)
2019/01/31 Javascript
在Vue中使用this.$store或者是$route一直报错的解决
2019/11/08 Javascript
[01:10:49]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
[47:03]完美世界DOTA2联赛PWL S3 Galaxy Racer vs Phoenix 第二场 12.10
2020/12/13 DOTA
python中使用urllib2获取http请求状态码的代码例子
2014/07/07 Python
python 3.7.0 下pillow安装方法
2018/08/27 Python
使用python爬取抖音视频列表信息
2019/07/15 Python
python 实现二维列表转置
2019/12/02 Python
python海龟绘图之画国旗实例代码
2020/11/11 Python
详解解决jupyter不能使用pytorch的问题
2021/02/18 Python
Django中的DateTimeField和DateField实现
2021/02/24 Python
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
HTML5 在canvas中绘制矩形附效果图
2014/06/23 HTML / CSS
简单的HTML5初步入门教程
2015/09/29 HTML / CSS
Too Faced官网:美国知名彩妆品牌
2017/03/07 全球购物
捷克家居装饰及图书音像购物网站:Velký košík
2018/04/16 全球购物
竞聘上岗演讲稿
2014/05/16 职场文书
企业与个人合作经营协议书
2014/11/01 职场文书
2015年大学生实习评语
2015/03/25 职场文书
PHP对接阿里云虚拟号的实现(号码隐私保护)
2021/04/06 PHP
SpringAop日志找不到方法的处理
2021/06/21 Java/Android