J'essaye de me connecter simultanément à plusieurs canaux et de recevoir des messages d'une API push via la bibliothèque websocket de python. En considérant le code suivant ci-dessous, comment vous connecteriez-vous à plusieurs canaux? ce code a été obtenu et légèrement modifié à partir d'ici: https://pypi.python.org/pypi/websocket-clientWebsockets Python, abonnement à plusieurs canaux
Ce qui me trouble est la deuxième dernière ligne: ws.on_open = on_open. on_open est défini comme une fonction ci-dessus et prend 1 argument mais aucun argument n'est passé lors de l'appel de la fonction, je ne me souviens pas de l'avoir rencontré auparavant en code python, donc je ne sais pas vraiment ce qui se passe dans cette ligne.
Comment puis-je modifier ce code afin que je puisse transmettre une variable contenant une chaîne à la fonction on_open afin que je puisse spécifier le nom du Chanel auquel je veux m'abonner? Mon objectif principal est de pouvoir utiliser la bibliothèque multi-traitement pour passer plusieurs canaux à s'abonner simultanément.
Est-ce que j'accomplirais cela en créant plusieurs objets ws ou, un objet ws et en appelant on_open plusieurs fois avec différents canaux comme arguments?
import websocket
import thread
import time
import json
def on_message(ws, message):
print(message)
def on_error(ws, error):
print(error)
def on_close(ws):
print("### closed ###")
def on_open(ws):
def run(*args):
ws.send(json.dumps({'channel':'channel1'}))
while True:
time.sleep(1)
ws.close()
print("thread terminating...")
thread.start_new_thread(run,())
if __name__ == "__main__":
websocket.enableTrace(True)
ws = websocket.WebSocketApp("wss://random.example.com",
on_message = on_message,
on_error = on_error,
on_close = on_close)
ws.on_open = on_open
ws.run_forever()