问题
python 脚本进行 MQ 消费过慢, rabbitmq 服务端开始累积队列的时候, 会发现 python 脚本跑满 CPU
假如消费队列中, 消息具有前后依赖关系,那么多线程并发 python 脚本可以保持这个依赖关系吗例如
消息 ID 1 openstack NOVA 发送消息我要创建云主机
消息 ID 2 openstack CINDER 发送信息,我要创建一个 10GB 的云盘
消息 ID 3 把创建的云盘挂载到云主机中上述问题纯属假设, 我们不考虑程序的重试机制, 超时机制, 回源机制
那么就是说,假如如果不顺序执行 MQ 任务, 可能会导致错误发生
说明
本文只针对 customer 部分进行单进程, 多进程测试
pika 说明
当使用 centos7 进行程序开发时, 可以通过两种方法安装 pika 模块
yum install -y python2-pika-0.10.0-9.el7.noarch (安装 pika-0.9 版本)
pip install pika (安装了 pika 1.1.0 版本)
区别
pika 0.9.0
进行 rabbitmq 消费时, 经常会遇到服务器中有消费堆积现象发生
当服务器端有消费堆积时候, 运行 customer python 进程 CPU 消耗会达到 100%
注意使用时参数却别
result = channel.queue_declare(exclusive=True) 可以不指定 QUEUE 参数
channel.basic_consume(callback,
queue_name='fanout_cmdb3_mq_exchange',
no_ack=False)
pika 1.1.0
解决了对服务端消费堆积问题
没有再发现 python 脚本 CPU 消耗 100% 问题
注意使用时参数却别
result = channel.queue_declare(exclusive=Tru

探讨Python脚本消费RabbitMQ队列时的性能瓶颈,分析单线程与多线程消费模式下队列处理顺序及CPU消耗问题,提供pika模块不同版本的使用对比。
最低0.47元/天 解锁文章
269





