An existing connection was forcibly closed by the remote host 에러 해결

Seungsoo Lee·2022년 8월 19일
0

web

목록 보기
5/13

websocket으로 데이터를 받아오던 도중 갑자기 끊기는 사태가 일어났다.
(binance 같은 경우 24시간 이후에는 websocket을 다시 연결해줘야한다.)
그러면 다시 연결하면 되는데, 저번 코드에서는 close되면 프로그램이 종료가 되었다.
이를 해결하기 위해서 closed 되면 다시 websocket연결을 해주는 flow가 필요한데

	def on_close_ts(self, ws, close_status_code, close_msg):
		asyncio.run(self.wsTradeStream(self.ticker))
		print("### Reconnecting... ###")
        
	async def wsTradeStream(self, ticker):
		# websocket.enableTrace(True)
		ws = websocket.WebSocketApp(f"wss://stream.binance.com:9443/ws/{ticker}@trade",
								on_open=self.on_open,
								on_message=self.on_message_ts,
								on_error=self.on_error,
								on_close=self.on_close_ts)

		ws.run_forever(dispatcher=rel) # Set dispatcher to automatic reconnection
		rel.signal(2, rel.abort)  # Keyboard Interrupt
		rel.dispatch()

이런식으로 close될때 다시 연결할 수 있도록 짜보았다.

https://github.com/websocket-client/websocket-client/issues/580

0개의 댓글