当我在Pika中创建永久发行商时遇到问题

问题描述

我有一个Django网站,我希望来自它的请求始终发布到RabbitMQ。为此,我使用的是pika BlockingConnection,并且我始终保持连接打开状态,以使用basic_publish发布网站请求,但是当连接过时时,每当发布新消息时,都会出现以下异常

pika.exceptions.StreamLostError: Stream connection lost: brokenPipeError(32,'broken pipe')

这是我用来管理连接的代码

class ConnectionManager():
    connection = None

    def get_connection(self):
        if(self.connection and self.connection.is_open):
            return self.connection
        
        params = pika.URLParameters('amqp://guest:guest@rabbit-server1:5672/%2F')
        self.connection = pika.BlockingConnection(params)
        return self.connection

    def get_channel(self,queue_name):

        if(self.channel and 
            self.channel.is_open and
            self.connection.is_open):

            return channel

        self.channel = self.get_connection().channel()
        self.channel.queue_declare(queue=queue_name,durable = True)
        return self.channel

用于发布:

publisher = ConnectionManager()

def publish_message(request_message):
    publisher.get_channel("queue").basic_publish(exchange='',routing_key="some_key",body=json.dumps(request_message),properties=pika.BasicProperties(
                            delivery_mode = 2,))

如何维护一个永久运行的连接以达到我的目的?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)