Python RabbitMQ:消费和发布可以在一个线程中完成吗?

Python RabbitMQ:消费和发布可以在一个线程中完成吗?,python,rabbitmq,python-multithreading,Python,Rabbitmq,Python Multithreading,使用RabbitMQ通道可以在一个Python线程中完成消费和发布吗?我认为您不应该这样做。MQ表示异步处理。在我看来,在同一个线程中同时进行消费和生产是无法达到目的的。我建议大家看看芹菜()来管理工人任务。这样,您就不需要直接与RMQ集成,因为它将为您处理生产和消费 但是,如果您确实希望直接与RMQ集成并管理自己的员工,请查看Kombu()以了解集成。有一些非阻塞的消费者和生产者允许您将两者都放在同一个事件循环中。我认为您的问题的简单答案是肯定的。但这取决于你想做什么。我的猜测是,您有一个循环

使用RabbitMQ通道可以在一个Python线程中完成消费和发布吗?

我认为您不应该这样做。MQ表示异步处理。在我看来,在同一个线程中同时进行消费和生产是无法达到目的的。

我建议大家看看芹菜()来管理工人任务。这样,您就不需要直接与RMQ集成,因为它将为您处理生产和消费


但是,如果您确实希望直接与RMQ集成并管理自己的员工,请查看Kombu()以了解集成。有一些非阻塞的消费者和生产者允许您将两者都放在同一个事件循环中。

我认为您的问题的简单答案是肯定的。但这取决于你想做什么。我的猜测是,您有一个循环正在一个通道上从您的线程中消耗,经过一些(小的或大的)处理后,它决定将其发送到另一个通道上的另一个队列(或交换),那么我看不出有任何问题。虽然最好将其分派到不同的线程,但这并不是必需的


如果您提供有关流程的更多详细信息,则可能有助于给出更具体的答案。

事实上,这根本不是问题,您可以很容易地做到这一点,例如,问题是您必须停止消费,因为这是一个阻塞循环,或者在消费消息的过程中进行生成


消费和生产是一个正常的用例,特别是在pika中,因为它不是,例如,当你想在消息上实现某种形式的过滤,或者,可能是一个智能路由器,这反过来会将消息传递到另一个队列。

我正在编写一个爬虫程序:因此,基本上工作人员会找到新的URL,并将这些URL添加到MQ中,以供其他工作人员处理。所以同一个工人接收和写入我将尝试Kombu,似乎在这种情况下它真的是一个替代方案,这是一个很好的抽象。我自己在一些项目上使用它。