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