Websocket-Client -- Problem mit Timeout Ping/Pong

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
CSchilling
User
Beiträge: 25
Registriert: Sonntag 4. April 2021, 09:13

Grüßt euch,

als Programmier-/ und Pythonneuling stolper ich regelmäßig über Hindernisse in meinem Projekt. Ich schreibe meinen Code derzeit mit PyCharm.

Das Problem welches mich derzeit beschäftigt ist folgendes:
Ich möchte mit Hilfe des Websocket-Client (Documentation siehe Link) Kursdaten von Binance (Websocket Documentation siehe Link) auslesen und verarbeiten. Das klappt auch soweit.
Da ich jedoch nicht vollständig verstehe, was der Websocket-Client anstellt und welche Parameter ich wie dort einbringen muss, bekomme ich regelmäßig einen Timeout mit der Fehlermeldung "Timeout PING/PONG".....
Es ist mir wichtig das der Websocketrequest für immer läuft, ohne das ich einen Timeout erhalte und das Programm still steht, denn mit den dort ausgelesenen Daten arbeitet ein seperaters Python Programm.

Der unten dargestellte Code zeigt lediglich den Websocketrequest an. In der on_message Funkition findet die Verarbeitung der eingehenden message statt, den Codeblock habe ich hier aber vorerst, der Übersichtlichkeit halber, raus gelassen.

Wie kann ich nun verhindern, dass meine Verbindung geschlossen wird?

Code: Alles auswählen

import websocket

websocket.enableTrace(True)
socketurl_combined = "wss://fstream.binance.com/stream?streams=btcusdt_perpetual@continuousKline_1m/btcusdt_perpetual@continuousKline_5m"


def on_message(wsapp, message):
    print(message)
    # [.....Code below.....]


def on_open(wsapp):
    print('### ONLINE ###')


def on_close(wsapp):
    print('### OFFLINE ###')


def on_error(wsapp, error):
    print(error)


wsapp = websocket.WebSocketApp(socketurl_combined,
                               on_open=on_open,
                               on_message=on_message,
                               on_error=on_error,
                               on_close=on_close)

wsapp.run_forever(ping_interval=60, ping_timeout=10)
Über Hilfe würde ich mich freuen!

Besten Dank an alle und eine schöne Woche.

Grüße Chris
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Wenn Du keinen Timeout willst, darfst Du halt keinen ping_timeout definieren. Da ist dann halt die Frage, ob die Verbindung noch funktioniert.
Nichtsdestotrotz muß Dein Programm auch mit Verbindungsabbrüchen umgehen können.
CSchilling
User
Beiträge: 25
Registriert: Sonntag 4. April 2021, 09:13

Alles klar, danke für die Rückmeldung.

Dann stellt sich mir die Frage, wie ich automatisch eine neue Verbindung aufbauen kann? Bisher habe ich das Programm manuell neu ausgeführt, nachdem mir aufgefallen war, dass es die Verbindung verloren hat.
Im Netz findet man diverse Antworten zu den Themen Timeout, jedoch steig ich noch nicht hinter deren Code, ob dieser auch meine Problematik behebt.
Antworten