python 메모

[websocket] 연결이 끊겼을 때 reconnect를 위한 방법들

2023. 12. 16. 22:32
목차
  1. 1. websocket
  2. 2. websockets

파이썬에는 웹소켓 사용을 위한 websocket, websockets(두개가 다른 거다) 라이브러리가 있다.

웹소켓 연결이 끊겼을 때를 대비하기 위한 방법이 각각 다른데 이를 간단히 정리해두고자 한다.

 

1. websocket

websocket 라이브러리는 pip install websocket-client로 설치할 수 있다.

공식 github에 가서 보면 아래와 같은 설명이 있다(링크).

The WebSocketApp run_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
  1. 1. websocket
  2. 2. websockets
'python 메모' 카테고리의 다른 글
  • [python] list를 chunk로 나누는 방법들(메모)
  • [regex] 정규표현식 메모용
  • [GPU] pynvml 모듈로 gpu 사용량 체크하기
  • [python] jsonl로 데이터 읽고 쓰기
Fine애플
Fine애플
이것저것
Fine애플
끄적끄적
Fine애플
전체
오늘
어제
  • 분류 전체보기 (167)
    • 논문 및 개념 정리 (27)
    • Pattern Recognition (8)
    • 개발 (57)
    • python 메모 (45)
    • pytorch, tensorflow (5)
    • 알고리즘 (9)
    • Toy Projects (4)
    • 통계이론 (2)
    • Reinforcement Learning (10)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • Bert
  • reinforcement learning
  • container
  • GPU
  • miniconda
  • 딥러닝
  • transformer
  • pandas
  • python
  • nlp
  • 개발환경
  • BigBird
  • ubuntu
  • Docker
  • 언어모델
  • 자연어
  • PyTorch
  • tensorflow
  • 알고리즘
  • Probability

최근 댓글

최근 글

hELLO · Designed By 정상우.
Fine애플
[websocket] 연결이 끊겼을 때 reconnect를 위한 방법들
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.