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 排列组合之itertools
Mar 20 Python
Python的函数的一些高阶特性
Apr 27 Python
在Django的上下文中设置变量的方法
Jul 20 Python
Python读取网页内容的方法
Jul 30 Python
python利用sklearn包编写决策树源代码
Dec 21 Python
python编写简易聊天室实现局域网内聊天功能
Jul 28 Python
Python打包方法Pyinstaller的使用
Oct 09 Python
python得到windows自启动列表的方法
Oct 14 Python
Django 配置多站点多域名的实现步骤
May 17 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
Feb 24 Python
python如何从键盘获取输入实例
Jun 18 Python
python利用appium实现手机APP自动化的示例
Jan 26 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 强制下载文件实现代码
2013/10/28 PHP
thinkphp分页实现效果
2016/10/13 PHP
Ubuntu 16.04下安装PHP 7过程详解
2017/03/28 PHP
Yii redis集合的基本使用教程
2020/06/14 PHP
用javascript实现给图片加链接
2007/08/15 Javascript
用JQuery 实现AJAX加载XML并解析的脚本
2009/07/25 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
2014/09/03 Javascript
jQuery实现菜单式图片滑动切换
2015/03/14 Javascript
JS简单实现DIV相对于浏览器固定位置不变的方法
2016/06/17 Javascript
Vuejs第十一篇组件之slot内容分发实例详解
2016/09/09 Javascript
微信小程序  生命周期详解
2016/10/27 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
2016/12/22 Javascript
详解使用路由延迟加载 Angular 模块
2017/10/12 Javascript
详解JavaScript添加给定的标签选项
2018/09/17 Javascript
基于JavaScript伪随机正态分布代码实例
2019/11/07 Javascript
electron+vue实现div contenteditable截图功能
2020/01/07 Javascript
JS实现简易计算器
2020/02/14 Javascript
Pyramid Mako模板引入helper对象的步骤方法
2013/11/27 Python
Python字典及字典基本操作方法详解
2018/01/30 Python
Python子类继承父类构造函数详解
2019/02/19 Python
python实现ip代理池功能示例
2019/07/05 Python
Python GUI库PyQt5图形和特效样式QSS介绍
2020/02/25 Python
django model 条件过滤 queryset.filter(**condtions)用法详解
2020/05/20 Python
python中return不返回值的问题解析
2020/07/22 Python
python在地图上画比例的实例详解
2020/11/13 Python
html5响应式开发自动计算fontSize的方法
2020/01/13 HTML / CSS
英国花园、DIY、电器和家居用品商店:Robert Dyas
2019/03/18 全球购物
Big Green Smile法国:领先的英国有机和天然产品在线商店
2021/01/02 全球购物
亚洲最大的运动鞋寄售店:KicksCrew
2020/11/26 全球购物
会计岗位职责
2013/11/08 职场文书
优秀大学生的自我评价
2014/01/16 职场文书
《自选商场》教学反思
2014/02/14 职场文书
银行服务明星推荐材料
2014/05/29 职场文书
社区志愿者服务心得体会
2016/01/22 职场文书
为什么MySQL不建议使用SELECT *
2022/04/03 MySQL
css如何把元素固定在容器底部的四种方式
2022/06/16 HTML / CSS