如何使用python中的pika(RabbitMQ)向使用者添加多处理

如何使用python中的pika(RabbitMQ)向使用者添加多处理,python,rabbitmq,multiprocessing,pika,Python,Rabbitmq,Multiprocessing,Pika,我有非常基本的生产者-消费者代码,是用python的pika框架编写的。问题是-消费者端在队列中的消息上运行太慢。我运行了一些测试,发现我可以通过多处理将工作流速度提高27倍。问题是-我不知道向代码中添加多处理功能的正确方法是什么 导入鼠兔 导入json 从日期时间导入日期时间 从函数导入下载 def回调(ch、方法、属性、正文): 打印('有东西') body=json.loads(body) 类型=主体[-1]['type'] 打印('当前工作中的对象类型'+类型) cnums=[x['ca

我有非常基本的生产者-消费者代码,是用python的pika框架编写的。问题是-消费者端在队列中的消息上运行太慢。我运行了一些测试,发现我可以通过多处理将工作流速度提高27倍。问题是-我不知道向代码中添加多处理功能的正确方法是什么

导入鼠兔
导入json
从日期时间导入日期时间
从函数导入下载
def回调(ch、方法、属性、正文):
打印('有东西')
body=json.loads(body)
类型=主体[-1]['type']
打印('当前工作中的对象类型'+类型)
cnums=[x['cadnum']表示主体[:-1]]
打印('Got{}cnums to working'.格式(len(cnums)))
date\u start=datetime.now()
下载(类型,cnums)
date\u end=datetime.now()
ch.basic确认(交付标记=方法交付标记)
打印({}秒完成下载)。格式((日期\结束日期\开始)。总时间\秒()
def消耗(队列_名称='bot test'):
parameters=pika.URLParameters('server@address')
连接=pika.BlockingConnection(参数)
channel=connection.channel()
channel.queue\u declare(queue=queue\u name,durable=True)
通道基本qos(预取计数=1)
channel.basic_consume(回调,queue='bot-test')
打印('[*]正在等待消息。要退出,请按CTRL+C')
channel.start_consuming()
如何从这里开始添加多处理功能?

我建议您查看Pika的内容。请注意,此代码仅供示例使用。在处理线程的情况下,您必须使用更智能的方式来管理线程

目标是不阻塞运行Pika的IO循环的线程,并正确地从工作线程回调IO循环。这就是为什么
add\u callback\u threadsafe
存在并在该代码中使用



注意:RabbitMQ团队监控
RabbitMQ用户
,有时只回答有关StackOverflow的问题。

您大部分时间在哪里?正在等待您的下载?如果是这种情况,那么您是I/O绑定的,可能使用线程而不是多处理,或者,如果您喜欢,可以使用异步操作系统方法,例如使用
asyncio