Python WebSocket: biblioteca Python recomendada y ejemplos de uso
Se puede acceder a nuestra WebSocket API a través de cualquier lenguaje de programación compatible con WebSocket (Python, Javascript, C#, Go, etc.). Muchos lenguajes de programación ofrecen bibliotecas WebSocket que permiten a los programadores utilizar una interfaz WebSocket sin necesidad de comprender los intrincados detalles del protocolo WebSocket.
Python es un ejemplo de estos lenguajes, puesto que ofrece numerosas bibliotecas WebSocket diferentes, así que ¿cómo sabe un programador qué biblioteca usar, o cómo usar su biblioteca elegida para garantizar la máxima eficacia? A continuación incluimos nuestra biblioteca recomendada de Python para WebSocket, así como algunos ejemplos de cómo utilizar la biblioteca en diferentes casos.

Cliente WebSocket

Nuestra biblioteca Python para WebSocket recomendada es websocket-client. La biblioteca es compatible tanto con Python 2 como con Python 3. Sin embargo, para el nuevo código recomendamos utilizar únicamente Python 3, ya que Python 2 pronto quedará obsoleto.
La biblioteca websocket-client se puede descargar desde Python Package Index (pypi.org) e instalar a través del archivo setup.py incluido:
  • python setup.py install.
Alternativamente, se puede descargar e instalar simultáneamente a través de la herramienta de instalación estándar de Python (pip):
  • pip install websocket-client

Uso

La biblioteca de cliente WebSocket se puede utilizar para crear un cliente WebSocket sincrónico (de bloqueo) o un cliente asincrónico (no de bloqueo, controlado por eventos). Ambas versiones pueden interactuar de forma efectiva con nuestra API, por lo que la elección dependerá de los requisitos específicos de la implementación (como, por ejemplo, si otras tareas se debían realizar en paralelo).
Por ejemplo, una simple aplicación de supervisión de precios de mercado podría utilizar un cliente sincrónico que simplemente esperase nuevos datos de mercado y comparase el precio de mercado con un valor específico, mientras que un robot comercial con todas las funciones necesitaría utilizar un cliente asíncrono con las fuentes de datos de mercado en subprocesos separados (para que las tareas de análisis y negociación pudieran continuar en paralelo).
A continuación se muestran ejemplos básicos de clientes sincrónicos y asincrónicos, que se pueden utilizar como punto de partida para el código API más complejo.
Interfaz API de WebSocket sincrónico
# Import WebSocket client libraryfrom websocket import create_connection# Connect to WebSocket API and subscribe to trade feed for XBT/USD and XRP/USDws = create_connection("wss://ws.kraken.com/")ws.send('{"event":"subscribe", "subscription":{"name":"trade"}, "pair":["XBT/USD","XRP/USD"]}')# Infinite loop waiting for WebSocket datawhile True: print(ws.recv())
Interfaz API de WebSocket asincrónico
# Import WebSocket client library (and others)import websocketimport _threadimport time# Define WebSocket callback functionsdef ws_message(ws, message): print("WebSocket thread: %s" % message)def ws_open(ws): ws.send('{"event":"subscribe", "subscription":{"name":"trade"}, "pair":["XBT/USD","XRP/USD"]}')def ws_thread(*args): ws = websocket.WebSocketApp("wss://ws.kraken.com/", on_open = ws_open, on_message = ws_message) ws.run_forever()# Start a new thread for the WebSocket interface_thread.start_new_thread(ws_thread, ())# Continue other (non WebSocket) tasks in the main threadwhile True: time.sleep(5) print("Main thread: %d" % time.time())
Toda la información, así como las instrucciones para la biblioteca de cliente WebSocket están disponibles a través del archivo de código de la biblioteca.