파이썬에는 웹소켓 사용을 위한 websocket
, websockets
(두개가 다른 거다) 라이브러리가 있다.
웹소켓 연결이 끊겼을 때를 대비하기 위한 방법이 각각 다른데 이를 간단히 정리해두고자 한다.
1. websocket
websocket
라이브러리는 pip install websocket-client
로 설치할 수 있다.
공식 github에 가서 보면 아래와 같은 설명이 있다(링크).
The WebSocketApprun_forever
loop will automatically try to reconnect to an open WebSocket connection when a network connection...run_forever
does not automatically reconnect if the server closes the WebSocket gracefully
코드 예시는 다음과 같다.
import websocket
import _thread
import time
import rel
def on_message(ws, message):
print(message)
def on_error(ws, error):
print(error)
def on_close(ws, close_status_code, close_msg):
print("### closed ###")
def on_open(ws):
print("Opened connection")
if __name__ == "__main__":
websocket.enableTrace(True)
ws = websocket.WebSocketApp("wss://api.gemini.com/v1/marketdata/BTCUSD",
on_open=on_open,
on_message=on_message,
on_error=on_error,
on_close=on_close)
ws.run_forever(dispatcher=rel, reconnect=5, ping_interval=60)
rel.signal(2, rel.abort) # Keyboard Interrupt
rel.dispatch()
2. websockets
websockets
라이브러리에서는 다음과 같이 async for를 써서 연결 끊김에 대응하라고 한다(링크)
async for websocket in websockets.connect(...):
try:
...
except websockets.ConnectionClosed:
continue
728x90
'python 메모' 카테고리의 다른 글
[python] list를 chunk로 나누는 방법들(메모) (0) | 2024.01.03 |
---|---|
[regex] 정규표현식 메모용 (0) | 2023.12.18 |
[GPU] pynvml 모듈로 gpu 사용량 체크하기 (0) | 2023.12.09 |
[python] jsonl로 데이터 읽고 쓰기 (0) | 2023.11.28 |
[datetime] int형 시간을 datetime으로 바꾸기 (0) | 2023.11.27 |