python消息队列celery_python—Celery异步分布式
一、Celery异步分布式
Celery 是一个python开发的异步分布式任务调度模块,是一个消息传输的中间件,可以理解为一个邮箱,每当应用程序调用celery的异步任务时,会向broker传递消息,然后celery的worker从中取消息
Celery 用于存储消息以及celery执行的一些消息和结果
对于brokers,官方推荐是rabbitmq和redis
对于backend,也就是指数据库,为了简单一般使用redis
使用redis连接url格式:
redis://:password@hostname:port/db_number
1)定义连接脚本tasks.py
#!/usr/bin/env python
from celery import Celery
broker = "redis://192.168.2.230:6379/1"
backend = "redis://192.168.2.230:6379/2"
app = Celery("tasks", broker=broker, backend=backend)
@app.task
def add(x,y):
return x+y
2)安装启动celery
pip install celery
pip install redis
启动方式:celery -A huang tasks -l info #-l 等同于 --loglevel
3)执行测试 huang.py
#!/usr/bin/env python
from tasks import add
re = add.delay(10,20)
print(re.result) #任务返回值
print(re.ready) #如果任务被执行返回True,其他情况返回False
print(re.get(timeout=1)) #带参数的等待,最后返回结果
print(re.status) #任务当前状态
运行结果:
30
>
30
SUCCESS
4)根据成功返回的key或celery界面输出的信息,查看redis存储
说明:停止celery服务,执行完huang.py之后,再启动celery服务也是有保存数据的
二、celery多进程
1)配置文件 celeryconfig.py
#!/usr/bin/env python
#-*- coding:utf-8 -*-
from kombu import Exchange,Queue
BROKER_URL = "redis://192.168.2.230:6379/3"
CELERY_RESULT_BACKEND = "redis://192.168.2.230:6379/4"
CELERY_QUEUES = (
Queue("default",Exchange("default"),routing_key="default"),
Queue("for_task_A",Exchange("for_task_A"),routing_key="for_task_A"),
Queue("for_task_B",Exchange("for_task_B"),routing_key="for_task_B")
)
CELERY_ROUTES = {
'tasks.taskA':{"queue":"for_task_A","routing_key":"for_task_A"},
'tasks.taskB':{"queue":"for_task_B","routing_key":"for_task_B"}
}
2)tasks.py
#!/usr/bin/env python
#-*- coding:utf-8 -*-
from celery import Celery
app = Celery()
app.config_from_object("celeryconfig")
@app.task
def taskA(x,y):
return x+y
@app.task
def taskB(x,y,z):
return x+y+z
3)启动celery
celery -A tasks worker --loglevel info
4)执行脚本huang2.py
#!/usr/bin/env python
#-*- coding:utf-8 -*-
from tasks import taskA,taskB
re = taskA.delay(10,20)
print(re.result) #任务返回值
print(re.ready) #如果任务被执行返回True,其他情况返回False
print(re.get(timeout=1)) #带参数的等待,最后返回结果
print(re.status) #任务当前状态
re2 = taskB.delay(10,20,30)
print(re2.result)
print(re2.ready)
print(re2.get(timeout=1))
print(re2.status)
5)运行结果
None
>
30
SUCCESS
None
>
60
SUCCESS
python消息队列celery_python—Celery异步分布式相关推荐
- python消息队列celery_python异步任务神器celery
图片来源:http://blog.51cto.com/huangzp/2052713 最近生产环境的消息量越来越大,服务器采用nginx转发并负载均衡到tornado服务器,服务器有点处理不过来了. ...
- python 消息队列、异步分布式
一.消息队列 消息队列:是在消息的传输过程中保存消息的容器. 消息队列最经典的用法就是消费者和生成者之间通过消息管道来传递消息,消费者和生成者是不同的进程.生产者往管道中写消息,消费者从管道中读消息. ...
- python消息队列celery_【干货分享】NTI任务管理之django+python篇celery异步任务使用...
阅读: 3,538 新浪微博的新鲜事推送如何实现?大规模的服务器如何实现Crontab管理?里面的秘密就在于消息队列.Celery是一个使用Python开发的分布式任务调度模块,是一个简单.灵活.可靠 ...
- python—Celery异步分布式
python-Celery异步分布式 Celery 是一个python开发的异步分布式任务调度模块,是一个消息传输的中间件,可以理解为一个邮箱,每当应用程序调用celery的异步任务时,会向brok ...
- 浅谈消息队列及常见的分布式消息队列中间件
背景 分布式消息队列中间件是是大型分布式系统不可缺少的中间件,通过消息队列,应用程序可以在不知道彼此位置的情况下独立处理消息,或者在处理消息前不需要等待接收此消息.所以消息队列主要解决应用耦合.异步消 ...
- python消息队列celery高可用_分布式消息队列-Celery
怎么能不恨呢,在我发现自己是恶鬼的时候,在我最绝望最虚弱的时候,这个世上最该跟我在一起的人却用刀把我的心刺穿了 Celery 是 Distributed Task Queue,分布式任务队列.分布式决 ...
- python消息队列框架_awesome asyncio-精选python异步框架清单集合
Python 3.4引入标准库的Python asyncio模块提供了使用协程编写单线程并发代码,通过套接字和其他资源对I / O进行多路访问,运行网络客户端和服务器以及其他相关原语的基础结构. As ...
- python消息队列celery_消息队列(kafka/nsq等)与任务队列(celery/ytask等)到底有什么不同?...
写这篇博文的起因是,我在论坛宣传我开源的新项目YTask(go语言异步任务队列)时,有小伙伴在下面回了一句"为什么不用nsq?".这使我想起,我在和同事介绍celery时同事说了一 ...
- python 消息队列 get是从队首还是队尾取东西_python分布式爬虫中消息队列知识点详解...
当排队等待人数过多的时候,我们需要设置一个等待区防止秩序混乱,同时再有新来的想要排队也可以呆在这个地方.那么在python分布式爬虫中,消息队列就相当于这样的一个区域,爬虫要进入这个区域找寻自己想要的 ...
最新文章
- R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(水平带状图、垂直带状图、抖动程度配置)实战
- paip.元数据驱动的转换-读取文件行到个list理念 uapi java php python总结
- node中npm安装模块的网络问题
- Python脚本-批量修改文件名
- Swoole-2.1.2 进程池模块的使用
- mysql 视图 查询速度慢_mysql 视图查询速度慢
- [HDU 6157]The Karting(DP)
- Cloud一分钟 | Facebook隐私泄露事件继续发酵,黑客明码标价出售聊天信息
- html中如何显示纯文本,从Html中取出纯文本
- 让你的 Linux 远离黑客(二):另外三个建议
- Javascript特效:天猫导航
- Win10 设置锁屏壁纸提示尝试其它图片
- android TV for x86,“掌上TV”的第一步,Android TV x86 体验分享
- 什么句子可以暗示自己恋爱了?
- OneNET麒麟座应用开发之七:控制采样电机
- 后处理SSAO,双边模糊
- 计算机的0和1是怎么变成我们屏幕上看到的图片、视频和声音的
- c#,c++,qt中多线程访问UI控件线程的问题汇总
- 解决Pycharm不能自动生成函数注释
- 基于springboot+vue水务报修处理系统
热门文章
- linux平台下MongoDB安装和环境搭建及踩过的坑
- 调用拷贝构造函数的场景
- 【IOS】从android角度来实现(理解)IOS的UITableView
- 淘宝SDK easing属性(旋转木马)
- powershell 设置代理_WSL2中使用proxychains ng代理加速
- 【C语言 基础】什么流程控制?
- C#基于websocket-sharp实现简易httpserver(封装)
- 《DSP using MATLAB》Problem 6.6
- 【洛谷】P1357 花园(状压+矩阵快速幂)
- 爬虫入门之urllib库详解(二)