Python 无法使用多处理队列处理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()

我有一个rabbitmq使用者,希望处理消息。我想用不同的流程处理这些消息。当我运行这段代码时,它可以使用但从不打印它,这是一个不同的过程

不可能吗

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()


这还应该打印收到的消息

当主代码退出时,子进程是否仍在运行?不,我只修改读取队列,我不运行其他程序。它正在将消息放入队列中,但无法获取它。当主代码退出时,子进程是否仍在运行?不,我只修改读取队列,我不运行其他任何东西。它正在将消息放入队列中,但无法获取消息。