Python [Errno 104]由对等方重置连接

我正在尝试通过websocket与服务器通信。我使用websocket库和Python 3

这是处理websocket的代码

import websocket
import threading


class SubscriptionClient:

    def __init__(self,stream_name,uri,on_message=None,**kwargs):
        self.stream_unique_name = stream_name
        self.uri = uri
        self.ws = None
        self.on_message_func = on_message

        self.logger = get_logger('websockets',__name__)

        self.logger.info('[WEBSOCKET] connecting to stream: ' + self.stream_unique_name)

        self.thread = threading.Thread(target=self.websocket_initializer,args=[])
        self.thread.start()
        self.logger.info('[WEBSOCKET] stream: ' + self.stream_unique_name + ' is Now connected'

        # self.start_heartbeat()

    def on_message(self,ws,message):
        if self.on_message_func:
            self.on_message_func(ws,message)
        else:
            print('ws:',message)

    def on_error(self,error):
        print('error',error)

    def on_close(self,ws):
        self.logger.info('[WEBSOCKET] stream: ' + self.stream_unique_name + ' closed')
        print("### closed ###")

    def on_ping(self,ping):
        print('############ PING #################')
        print(ping)
        

    def websocket_initializer(self):
        self.ws = websocket.WebSocketApp(self.uri,on_message=lambda ws,msg: self.on_message(ws,msg),on_error=lambda ws,error: self.on_error(ws,error),on_close=lambda ws: self.on_close(ws),on_ping=lambda ws,ping: self.on_ping(ws,ping)
                                         )

        self.ws.run_forever()

    def start_heartbeat(self):
        threading.Timer(60.0,self.start_heartbeat).start()
        self.ws.send('heartbeat'.encode('utf-8'))


当我在本地PC上运行此代码时,它可以正常工作,但是在EC2 AWS生产服务器上运行它时,我设法成功连接,大约10分钟后,我从网络套接字收到此消息error [Errno 104] Connection reset by peer。我知道为什么会这样。 我与正在连接的网站进行了交谈,他们说这可能是防火墙配置,但是当我在AWS实例中运行此命令systemctl list-unit-files | grep fire时,我什么都没发现。

即使我要捕获此错误并按照here中的说明重新连接到服务器,似乎我必须捕获此错误的唯一方法是比较字符串,这似乎不是正确的解决方案。 (我提醒您,我在on_error函数中收到错误,并且由于某种原因,它似乎给了我error作为字符串)。

有人知道这里发生了什么吗?为什么它在我的本地PC上可以正常运行,但是在生产服务器上却无法运行?!

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...