基于python 开发调试rabbitmq - 2

基于python 3 pika 调试 openstack rabbitmq

创建工作队列,类比一个大的工作,需要发送多个小任务到队列中,让多个消费者消费

多个任务时,多个消费者消费任务

new_task.py

复制代码
#!/usr/bin/env python
import pika
import sys

credentials = pika.PlainCredentials('openstack', 'servicepasswd')
connection = pika.BlockingConnection(
    pika.ConnectionParameters(host='10.146.203.171',virtual_host='/',credentials=credentials))
channel = connection.channel()

channel.queue_declare(queue='task_queue', durable=True)

message = ' '.join(sys.argv[1:]) or "Hello World!"
channel.basic_publish(
    exchange='',
    routing_key='task_queue',
    body=message,
    properties=pika.BasicProperties(
        delivery_mode=pika.DeliveryMode.Persistent
    ))
print(f" [x] Sent {message}")
connection.close()

worker1.py

复制代码
#!/usr/bin/env python
import pika
import time

credentials = pika.PlainCredentials('openstack', 'servicepasswd')
connection = pika.BlockingConnection(
    pika.ConnectionParameters(host='10.146.203.171',virtual_host='/',credentials=credentials))
channel = connection.channel()

channel.queue_declare(queue='task_queue', durable=True)
print(' [*] Waiting for messages. To exit press CTRL+C')


def callback(ch, method, properties, body):
    print(f" [x] Received {body.decode()}")
    time.sleep(body.count(b'.'))
    print(" [x] Done")
    ch.basic_ack(delivery_tag=method.delivery_tag)


channel.basic_qos(prefetch_count=1)  #qos  限制,公平分发
channel.basic_consume(queue='task_queue', on_message_callback=callback)

channel.start_consuming()

worker2.py

代码同 复制代码
代码同worker1

当多次执行new_task.py 时,模拟发送了多个任务出去,此时 worker1和worker2 各自都能消费到消息

相关推荐
是乐谷27 分钟前
2025-05-19 代码人生 - 精选文章周刊
人工智能·python·程序人生·面试·职场和发展
感谢地心引力30 分钟前
【Matlab】雷达图/蛛网图
开发语言·matlab
悟能不能悟34 分钟前
Spring Boot中如何对密码等敏感信息进行脱敏处理
spring boot·后端·python
java1234_小锋41 分钟前
一周学会Pandas2 Python数据处理与分析-Pandas2数据合并与对比-pd.merge():数据库风格合并
数据库·python·pandas
逾非时1 小时前
python网络爬虫的基本使用
开发语言·爬虫·python
ppdkx1 小时前
python训练营第33天
开发语言·python
gs801401 小时前
解决“uv 无法识别为命令”问题:Windows 下 Python 工具安装后的路径配置方法
windows·python·uv
aiweker1 小时前
python web 开发-Flask-Login使用详解
前端·python·flask
玉笥寻珍1 小时前
从零开始:Python语言进阶之异常处理
开发语言·python
Java永无止境1 小时前
JavaSE常用API之Runtime类:掌控JVM运行时环境
java·开发语言·jvm