Python 在我用皮卡语创建永久出版商时遇到问题

Python 在我用皮卡语创建永久出版商时遇到问题,python,django,rabbitmq,pika,Python,Django,Rabbitmq,Pika,我有一个Django网站,我希望来自它的请求总是发布到RabbitMQ。为此,我使用PikaBlockingConnection,并始终保持连接打开,以使用basic\u publish发布网站请求,但当连接有点过时时,每当我发布新消息时,我会遇到以下异常 pika.exceptions.StreamLostError: Stream connection lost: BrokenPipeError(32, 'Broken pipe') 这是我用来管理连接的代码 class Connectio

我有一个Django网站,我希望来自它的请求总是发布到RabbitMQ。为此,我使用Pika
BlockingConnection
,并始终保持连接打开,以使用
basic\u 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, 
                    ))

我如何维护一个永久运行的连接来满足我的目的?

RabbitMQ可能会在您遇到异常时记录一些有用的信息。记录了什么?
2020-09-25 13:34:55.019[错误]关闭AMQP连接(127.0.0.1:52240->127.0.0.1:5672):错过了来自客户端的心跳,超时:60s
这是日志中的错误。我是否要将heartbeat参数添加到连接字符串中,并给它一个小于60s的值?请使用术语
pika block I/O loop
进行搜索。您的代码阻止Pika发送心跳。谢谢。我搜索了日志,但没有任何关于pika块I/O循环的内容。也只搜索了
,但找不到日志项。@LukeBakken您能建议一种方法使我的连接持久并避免管道破裂异常吗?