Python 无法使用多处理队列处理rabbitmq消息
我有一个rabbitmq使用者,希望处理消息。我想用不同的流程处理这些消息。当我运行这段代码时,它可以使用但从不打印它,这是一个不同的过程 不可能吗Python 无法使用多处理队列处理rabbitmq消息,python,rabbitmq,multiprocessing,queue,pika,Python,Rabbitmq,Multiprocessing,Queue,Pika,我有一个rabbitmq使用者,希望处理消息。我想用不同的流程处理这些消息。当我运行这段代码时,它可以使用但从不打印它,这是一个不同的过程 不可能吗 import pika import Consumer_Config import multiprocessing from multiprocessing import Process, Queue class con(object): def __init__(self): self.q = Queue()
import pika
import Consumer_Config
import multiprocessing
from multiprocessing import Process, Queue
class con(object):
def __init__(self):
self.q = Queue()
def read_queue(self):
self.config = Consumer_Config._config()
pika_conn_params = pika.ConnectionParameters(
host=self.config.url, port=self.config.port,
credentials=pika.credentials.PlainCredentials(self.config.user_id, self.config.password),
)
connection = pika.BlockingConnection(pika_conn_params)
channel = connection.channel()
queue = channel.queue_declare(
queue="queue", durable=True,
exclusive=False, auto_delete=False, passive=True)
channel.basic_consume("queue", self.on_msg)
channel.start_consuming()
def on_msg(self, _unused_channel, basic_deliver, properties, body):
tb = body
self.q.put(tb)
def write(self):
while True:
v = self.q.get()
print(v)
def run(self):
p = multiprocessing.Process(target=self.read_queue(), args=[self.q])
c = multiprocessing.Process(target=self.write(), args=[self.q])
c.start()
p.start()
if __name__ == "__main__":
d = con()
d.run()
这还应该打印收到的消息当主代码退出时,子进程是否仍在运行?不,我只修改读取队列,我不运行其他程序。它正在将消息放入队列中,但无法获取它。当主代码退出时,子进程是否仍在运行?不,我只修改读取队列,我不运行其他任何东西。它正在将消息放入队列中,但无法获取消息。