For information on changes for our US clients, please visit our Support Center article.

Python WebSocket - exemplos de uso e biblioteca Python recomendada
Nossa API WebSocket pode ser acessada por meio de qualquer linguagem de programação compatível com WebSocket (Python, Javascript, C#, Go etc.). Muitas linguagens de programação oferecem bibliotecas WebSocket que permitem que os programadores usem uma interface WebSocket sem compreender os intrincados detalhes do protocolo WebSocket.
O Python é um exemplo que oferece muitas bibliotecas WebSocket diferentes. Então, como um programador sabe qual biblioteca usar ou como usar sua biblioteca escolhida para obter a melhor eficácia? A seguir, apresentamos nossa biblioteca Python WebSocket recomendada e alguns exemplos de como usá-la em diferentes cenários.

Cliente WebSocket

Nossa biblioteca Python WebSocket recomendada é a biblioteca websocket-client. A biblioteca é compatível com o Python 2 e o Python 3, mas para um novo código, recomendamos usar apenas o Python 3, pois o Python 2 está em processo de desuso.
A biblioteca websocket-client pode ser baixada do Índice de pacotes Python (pypi.org) e instalada por meio do arquivo setup.py incluído:
  • python setup.py install
ou baixada e instalada simultaneamente por meio da ferramenta de instalação Python (pip) padrão:
  • pip install websocket-client

Uso

A biblioteca do cliente WebSocket pode ser usada para criar um cliente WebSocket síncrono (de bloqueio) ou assíncrono (sem bloqueio, orientado por eventos). Ambas as versões podem interagir com nossa API com sucesso, portanto, a escolha dependerá dos requisitos específicos da implementação (como, por exemplo, se outras tarefas precisam acontecer em paralelo).
Por exemplo, um aplicativo simples de monitoramento de preço de mercado seria capaz de usar um cliente síncrono que simplesmente espera por novos dados de mercado e compara o preço de mercado com um valor especificado, enquanto um bot de negociação completo precisaria usar um cliente assíncrono com feeds de dados de mercado em threads separados (para que as tarefas de análise e negociação possam continuar em paralelo).
Veja a seguir exemplos básicos de clientes síncronos e assíncronos, que podem ser usados como ponto de partida para um código de API mais complexo.
Interface de API WebSocket síncrona
# 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())
Interface de API WebSocket assíncrona
# 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())
Detalhes completos e instruções para a biblioteca do cliente WebSocket estão disponíveis através do arquivo de códigos da biblioteca.