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 相关文章推荐
Linux中Python 环境软件包安装步骤
Mar 31 Python
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
Jun 14 Python
Python处理XML格式数据的方法详解
Mar 21 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
Apr 02 Python
Python使用分布式锁的代码演示示例
Jul 30 Python
Python多继承原理与用法示例
Aug 23 Python
python求质数的3种方法
Sep 28 Python
修改默认的pip版本为对应python2.7的方法
Nov 06 Python
Python查找最长不包含重复字符的子字符串算法示例
Feb 13 Python
Python中的几种矩阵乘法(小结)
Jul 10 Python
Django中F函数的使用示例代码详解
Jul 06 Python
Pandas数据结构之Series的使用
Mar 31 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
DOTA2 玩家自创拉野攻略 特色英雄快速成长篇
2020/04/20 DOTA
使用NetBeans + Xdebug调试PHP程序的方法
2011/04/12 PHP
PHP __autoload函数(自动载入类文件)的使用方法
2012/02/04 PHP
Yii不依赖Model的表单生成器用法实例
2014/12/04 PHP
php结合正则批量抓取网页中邮箱地址
2015/05/19 PHP
PHP中的静态变量及static静态变量使用详解
2015/11/05 PHP
thinkPHP删除前弹出确认框的简单实现方法
2016/05/16 PHP
PHP实现支付宝即时到账功能
2016/12/21 PHP
javascript firefox不显示本地预览图片问题的解决方法
2008/11/12 Javascript
javascript中文本框中输入法切换的问题
2013/12/10 Javascript
jquery对元素拖动排序示例
2014/01/16 Javascript
javascript闭包入门示例
2014/04/30 Javascript
如何在node的express中使用socket.io
2014/12/15 Javascript
js判断浏览器版本以及浏览器内核的方法
2015/01/20 Javascript
JS动画效果打开、关闭层的实现方法
2015/05/09 Javascript
将页面table内容与样式另存成excel文件的方法
2015/08/05 Javascript
AngularJS仿苹果滑屏删除控件
2016/01/18 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
2016/02/01 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
2016/10/25 Javascript
ES6教程之for循环和Map,Set用法分析
2017/04/10 Javascript
关于jquery layui弹出层的使用方法
2018/04/21 jQuery
用VueJS写一个Chrome浏览器插件的实现方法
2019/02/27 Javascript
Vue数据绑定简析小结
2019/05/07 Javascript
vue实现axios图片上传功能
2019/08/20 Javascript
python冒泡排序算法的实现代码
2013/11/21 Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
2019/01/30 Python
python自动化之Ansible的安装教程
2019/06/13 Python
关于tf.TFRecordReader()函数的用法解析
2020/02/17 Python
StubHub哥伦比亚:购买和出售您的门票
2016/10/20 全球购物
世界上最大的曲棍球商店:Pro Hockey Life
2017/10/30 全球购物
DC Shoes澳大利亚官方网上商店:购买DC鞋子
2019/10/25 全球购物
商铺租房协议书范本
2014/12/04 职场文书
2015年公路养护工作总结
2015/05/13 职场文书
毕业赠语大全
2015/06/23 职场文书
2015年度女工工作总结
2015/10/22 职场文书
财产分割协议书
2016/03/22 职场文书