繁体   English   中英

使用带有pika的线程的rabbitmq

[英]rabbitmq using threads with pika

我正在尝试使用Rabbitmq获得基本的队列系统,但是当我尝试使用线程时,它似乎只运行1个线程。

我的代码:

import pika
import threading

rabbit_url = "amqp://user:pass!@127.0.0.1:5672/%2f"

def start(max_threads):
    for i in xrange(max_threads):
        t = threading.Thread(target=run)
        t.start()
        t.join()

def run():
    connection = pika.BlockingConnection(pika.URLParameters(rabbit_url))
    channel = connection.channel()
    channel.basic_consume(callback,
                          queue='docketq',
                          no_ack=True)

    channel.start_consuming()

def callback(ch, method, properties, body):
    do_work(body)

def do_work(body):
    print body

t.join()等待线程完成。 start()循环的第一次迭代中,您启动了第一个线程,然后等待其结束,但是它永远不会成功,因为channel.start_consuming()是一个无限循环,等待传入的消息。

Pika不是线程安全的。 皮卡常见问题解答

皮卡线安全吗?

Pika在代码中没有任何线程概念。 如果要通过线程使用Pika,请确保在该线程中创建的每个线程都有一个Pika连接。 跨线程共享一个Pika连接是不安全的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM