lea*_*tes 2 python multithreading rabbitmq 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
Run Code Online (Sandbox Code Playgroud)
t.join()
等待线程完成。在循环的第一次迭代中,start()
您启动第一个线程然后等待它完成,但它永远不会因为channel.start_consuming()
等待传入消息的无限循环。