簡體   English   中英

如何重新連接 websocket 連接 websocket-client

[英]How to reconnect a websocket connection websocket-client

我一直在嘗試編寫從 Binance 收集加密數據的代碼。 幣安會在 24 小時后自動斷開連接。 斷線后有什么辦法讓我重新連接嗎? 我相信永遠運行應該為我解決這個問題,但是當拋出錯誤時它會死掉。 我將 24/7 在服務器上運行這個程序。 我還需要一種方法來獲得通知,可能是電報/不和諧機器人,我可以構建我在哪里鍵入代碼以在斷開連接時發送

這是我得到的錯誤。

Traceback (most recent call last):
  File "exchanges/binance/binance_ticker.py", line 97, in <module>
    start()
  File "exchanges/binance/binance_ticker.py", line 94, in start
    rel.dispatch()
  File "/home/pyjobs/.local/lib/python3.8/site-packages/rel/rel.py", line 205, in dispatch
    registrar.dispatch()
  File "/home/pyjobs/.local/lib/python3.8/site-packages/rel/registrar.py", line 72, in dispatch
    if not self.loop():
  File "/home/pyjobs/.local/lib/python3.8/site-packages/rel/registrar.py", line 81, in loop
    e = self.check_events()
  File "/home/pyjobs/.local/lib/python3.8/site-packages/rel/registrar.py", line 232, in check_events
    self.callback('read', fd)
  File "/home/pyjobs/.local/lib/python3.8/site-packages/rel/registrar.py", line 125, in callback
    self.events[etype][fd].callback()
  File "/home/pyjobs/.local/lib/python3.8/site-packages/rel/listener.py", line 108, in callback
    if not self.cb(*self.args) and not self.persist and self.active:
  File "/home/pyjobs/.local/lib/python3.8/site-packages/websocket/_app.py", line 349, in read
    op_code, frame = self.sock.recv_data_frame(True)
  File "/home/pyjobs/.local/lib/python3.8/site-packages/websocket/_core.py", line 401, in recv_data_frame
    frame = self.recv_frame()
  File "/home/pyjobs/.local/lib/python3.8/site-packages/websocket/_core.py", line 440, in recv_frame
    return self.frame_buffer.recv_frame()
  File "/home/pyjobs/.local/lib/python3.8/site-packages/websocket/_abnf.py", line 352, in recv_frame
    payload = self.recv_strict(length)
  File "/home/pyjobs/.local/lib/python3.8/site-packages/websocket/_abnf.py", line 373, in recv_strict
    bytes_ = self.recv(min(16384, shortage))
  File "/home/pyjobs/.local/lib/python3.8/site-packages/websocket/_core.py", line 524, in _recv
    return recv(self.sock, bufsize)
  File "/home/pyjobs/.local/lib/python3.8/site-packages/websocket/_socket.py", line 122, in recv
    raise WebSocketConnectionClosedException(
websocket._exceptions.WebSocketConnectionClosedException: Connection to remote host was lost.

我的代碼:

import websocket
import rel


uri = "wss://stream.binance.com:9443/ws/!ticker@arr"


def on_message(ws, message):
print(message)


def on_error(ws, error):
print(error)
write_logs(error)


def on_close(ws, close_status_code, close_msg):
print("### closed ###")
write_logs(str(close_status_code) + str(close_msg))
start(


def on_open(ws):
print("Opened connection")


start()
websocket.enableTrace(True)
ws = websocket.WebSocketApp(uri,
on_open = on_open,
on_message=on_message,
on_error = on_error,
on_close (on_close)
ws.run_forever(dispatcher=rel) #Set the dispatcher to automatic reconnection.
rel.signal(2, rel.abort) # Keyboard Interrupt
rel.dispatch()


    
start()

這行代碼中的注釋ws.run_forever(dispatcher=rel) #Set the dispatcher to automatic reconnection. 可以根據 rel 模塊自動重新連接嗎? 模塊 rel 和 func 調度程序如何協同工作?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM