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开发WebService系列教程之REST,web.py,eurasia,Django
Jun 30 Python
Python functools模块学习总结
May 09 Python
python二分查找算法的递归实现方法
May 12 Python
一个基于flask的web应用诞生 组织结构调整(7)
Apr 11 Python
python matplotlib 在指定的两个点之间连线方法
May 25 Python
Python设计模式之外观模式实例详解
Jan 17 Python
python3对接mysql数据库实例详解
Apr 30 Python
使用Python调取任意数字资产钱包余额功能
Aug 15 Python
深入浅析Python 函数注解与匿名函数
Feb 24 Python
Python如何使用神经网络进行简单文本分类
Feb 25 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
Mar 04 Python
python 中的jieba分词库
Nov 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
全国FM电台频率大全 - 27 陕西省
2020/03/11 无线电
磨咖啡豆的密诀
2021/03/03 冲泡冲煮
discuz authcode 经典php加密解密函数解析
2020/07/12 PHP
PHP 动态生成静态HTML页面示例代码
2014/01/15 PHP
ThinkPHP视图查询详解
2014/06/30 PHP
php遍历数组的4种方法总结
2014/07/05 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
2020/02/10 PHP
js如何获取object类型里的键值
2014/02/18 Javascript
jquery基础教程之数组使用详解
2014/03/10 Javascript
jquery跟js初始化加载的多种方法及区别介绍
2014/04/02 Javascript
javascript实现rgb颜色转换成16进制格式
2015/07/10 Javascript
jQuery实用小技巧_输入框文字获取和失去焦点的简单实例
2016/08/25 Javascript
BootStrap中
2016/12/10 Javascript
详解angular element()方法使用
2017/04/08 Javascript
解决vue2.x中数据渲染以及vuex缓存的问题
2017/07/13 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
vue-router history模式下的微信分享小结
2018/07/05 Javascript
JS使用iView的Dropdown实现一个右键菜单
2019/05/06 Javascript
jquery多级树形下拉菜单的实例代码
2019/07/09 jQuery
python的dataframe转换为多维矩阵的方法
2018/04/11 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
2018/12/10 Python
Python 正则表达式匹配字符串中的http链接方法
2018/12/25 Python
python经典趣味24点游戏程序设计
2019/07/26 Python
skyn ICELAND官网:冰岛成分天然护肤品
2020/08/24 全球购物
房屋买卖协议书范本
2014/04/10 职场文书
产品质量保证书
2014/04/29 职场文书
个人查摆问题整改措施
2014/10/04 职场文书
关于有小孩的离婚协议书
2014/10/26 职场文书
2014年学生会工作总结范文
2014/11/07 职场文书
2014年信用社工作总结
2014/11/25 职场文书
2016年第32个教师节致辞
2015/11/26 职场文书
nginx配置proxy_pass中url末尾带/与不带/的区别详解
2021/03/31 Servers
SQL Server2019数据库之简单子查询的具有方法
2021/04/27 SQL Server
python中opencv实现图片文本倾斜校正
2021/06/11 Python
pytorch中的 .view()函数的用法介绍
2022/03/17 Python
一篇文章带你掌握SQLite3基本用法
2022/06/14 数据库