首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pika连接丢失错误: pika.exceptions.StreamLostError:流连接丢失: ConnectionResetError(104,由对等方重置连接)

Pika连接丢失错误: pika.exceptions.StreamLostError:流连接丢失: ConnectionResetError(104,由对等方重置连接)
EN

Stack Overflow用户
提问于 2019-11-19 06:14:42
回答 2查看 8K关注 0票数 3

回溯(最近一次调用):

文件"download_image_from_queue.py",第44行,在

代码语言:javascript
运行
复制
channel.start_consuming()

文件"/home/justdial/miniconda3/lib/python3.7/site-packages/pika/adapters/blocking_connection.py",第1866行,在start_consuming中

代码语言:javascript
运行
复制
self._process_data_events(time_limit=None)

文件"/home/justdial/miniconda3/lib/python3.7/site-packages/pika/adapters/blocking_connection.py",第2027行,在_process_data_events中

代码语言:javascript
运行
复制
self.connection.process_data_events(time_limit=time_limit)

文件"/home/justdial/miniconda3/lib/python3.7/site-packages/pika/adapters/blocking_connection.py",第825行,在process_data_events中

代码语言:javascript
运行
复制
self._flush_output(common_terminator)

文件"/home/justdial/miniconda3/lib/python3.7/site-packages/pika/adapters/blocking_connection.py",第522行,在_flush_output中

代码语言:javascript
运行
复制
raise self._closed_result.value.error

pika.exceptions.StreamLostError: Stream connection lost: ConnectionResetError(104, 'Connection reset by peer'

文件"download_image_from_queue.py":

代码语言:javascript
运行
复制
def callback(ch, method, properties, body):

    default_flag = True

    try:
        data = json.loads(body.decode("utf-8"))['DATA']

        url = data['url']
        dest_name = data['dest_name']

        default_flag = False
    except:
        print ("\n INCORRECT DATA FORMAT INSERTED INTO THE QUEUE... \n")
        pass

    if default_flag == False:
        os.system("cd /home/images_pred/ && wget -L --timeout=3 --tries=2 {} -O {}".format(url, dest_name))

    print ('\n Waiting for the queue to be filled...       PRESS CTRL+C TO STOP \n')


credentials = pika.PlainCredentials('abcd', 'BCD')
parameters = pika.ConnectionParameters('0.0.0.1', 5672, '/', credentials )


connection = pika.BlockingConnection(parameters)
channel = connection.channel()
#channel.basic_qos(prefetch_count = 1)

channel.basic_consume(queue = 'IMG_DOWNLOAD', auto_ack = False, on_message_callback = callback)
#channel.basic_ack()

print ('\n Waiting for the queue to be filled...       PRESS CTRL+C TO STOP \n')

channel.start_consuming()

一旦它开始消费,它就开始下载,但很快就会出现错误"pika.exceptions.StreamLostError:流连接丢失: ConnectionResetError(104,由对等方重置连接“)。

有人能帮我吗?

EN

回答 2

Stack Overflow用户

发布于 2021-08-31 18:41:01

直到作业被处理,并且您的进程返回发送ACK之前,有许多心跳丢失,因此连接消失。

理想解决方案(推荐)

使用线程并在线程中运行代码。在这里检查一个样本:

https://github.com/pika/pika/blob/1.0.1/examples/basic_consumer_threaded.py

快速解决方案不推荐

停止心跳。

如何禁用心跳?->在创建连接时传递heartbeat=0 .

代码语言:javascript
运行
复制
pika.ConnectionParameters(
   host=RABBIT_MQ_HOST, credentials=CREDENTIALS, heartbeat=0
)
票数 0
EN

Stack Overflow用户

发布于 2022-03-30 21:59:02

在设置连接时尝试使用不同的connection_attempts参数。connection_attempts的默认值是1。有关更多信息,请参见下面的链接。https://pika.readthedocs.io/en/stable/modules/parameters.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58927722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档