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类里的__init__方法函数,Python类的构造函数
Dec 10 Python
python网络爬虫学习笔记(1)
Apr 09 Python
Pycharm在创建py文件时,自动添加文件头注释的实例
May 07 Python
ActiveMQ:使用Python访问ActiveMQ的方法
Jan 30 Python
python实践项目之监控当前联网状态详情
May 23 Python
Django 反向生成url实例详解
Jul 30 Python
Python OpenCV实现鼠标画框效果
Aug 19 Python
python时间日期操作方法实例小结
Feb 06 Python
python实现滑雪者小游戏
Feb 22 Python
Python建造者模式案例运行原理解析
Jun 29 Python
Python性能测试工具Locust安装及使用
Dec 01 Python
Python爬虫之自动爬取某车之家各车销售数据
Jun 02 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
虹吸式咖啡探讨–研磨
2021/03/03 冲泡冲煮
PHP5/ZendEngine2的改进
2006/10/09 PHP
PHP实现Socket服务器的代码
2008/04/03 PHP
php array_filter除去数组中的空字符元素
2020/06/21 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
2015/12/18 PHP
thinkphp多层MVC用法分析
2015/12/30 PHP
PHP使用file_get_contents发送http请求功能简单示例
2018/04/29 PHP
laravel多条件查询方法(and,or嵌套查询)
2019/10/09 PHP
最短的IE判断代码
2011/03/13 Javascript
在网站上应该用的30个jQuery插件整理
2011/11/03 Javascript
jquery选择checked在ie8普通模式下的问题
2014/02/12 Javascript
浅析javascript函数表达式
2016/02/10 Javascript
nodejs基础知识
2017/02/03 NodeJs
对象不支持indexOf属性或方法的解决方法(必看)
2017/05/28 Javascript
浅谈Node异步编程的机制
2017/10/18 Javascript
详解Vue2 SSR 缓存 Api 数据
2017/11/20 Javascript
JS获取当前时间戳方法解析
2020/08/29 Javascript
vue 中的动态传参和query传参操作
2020/11/09 Javascript
[04:19]DOTA2亚洲邀请赛 现场花絮
2015/03/11 DOTA
Python的Asyncore异步Socket模块及实现端口转发的例子
2016/06/14 Python
深入浅析ImageMagick命令执行漏洞
2016/10/11 Python
详解Python多线程Selenium跨浏览器测试
2017/04/01 Python
python中使用psutil查看内存占用的情况
2018/06/11 Python
使用pytorch进行图像的顺序读取方法
2018/07/27 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
python中有函数重载吗
2020/05/28 Python
通过实例简单了解python yield使用方法
2020/08/06 Python
高中体育教学反思
2014/01/24 职场文书
师范学院美术系毕业生自我鉴定
2014/01/29 职场文书
2014社区三八妇女节活动方案
2014/03/30 职场文书
新闻编辑求职信
2014/04/09 职场文书
请假条格式范文
2014/04/10 职场文书
暑假家长评语大全
2014/04/17 职场文书
讲文明知礼仪演讲稿
2014/09/13 职场文书
区长工作作风个人整改措施
2014/10/01 职场文书
Mysql开启外网访问
2022/05/15 MySQL