WebSocket API v1/v2 — Рекомендуемая библиотека Python и примеры использования

Последнее обновление: 1 апр. 2025 г.

Доступ к нашему WebSocket API можно получить с помощью любого языка программирования, поддерживающего WebSocket (Python, Javascript, C#, Go и т. д.). Многие языки программирования предлагают библиотеки WebSocket, которые позволяют программистам использовать интерфейс WebSocket, не вникая в тонкости протокола WebSocket.

Python — один из примеров, предлагающий множество различных библиотек WebSocket. Как же программисту узнать, какую библиотеку использовать и как использовать выбранную библиотеку с максимальной эффективностью? Ниже приведена наша рекомендуемая библиотека Python WebSocket и несколько примеров того, как использовать эту библиотеку в различных сценариях.

Клиент WebSocket

Нашей рекомендуемой библиотекой Python WebSocket является библиотека websocket-client. Библиотека совместима как с Python 2, так и с Python 3, но для нового кода мы рекомендуем использовать только Python 3, поскольку Python 2 находится в процессе устаревания.

Библиотеку websocket-client можно загрузить из индекса пакетов Python (pypi.org) и установить с помощью включенного файла setup.py:

  • python setup.py install

или загрузить и установить одновременно с помощью стандартного инструмента установки Python (pip):

  • pip install websocket-client

Использование

Клиентская библиотека WebSocket может использоваться для создания синхронного (блокирующего) клиента WebSocket или асинхронного (неблокирующего, управляемого событиями) клиента. Обе версии могут успешно взаимодействовать с нашим API, поэтому выбор будет зависеть от конкретных требований реализации (например, от того, нужно ли выполнять другие задачи параллельно).

Например, простое приложение для отслеживания рыночных цен сможет использовать синхронный клиент, который просто ожидает новых рыночных данных и сравнивает рыночную цену с заданным значением, в то время как полнофункциональный торговый бот должен будет использовать асинхронный клиент с потоками рыночных данных в отдельных потоках (чтобы задачи анализа и торговли могли продолжаться параллельно).

Ниже приведены базовые примеры как синхронных, так и асинхронных клиентов, которые могут быть использованы в качестве отправной точки для более сложного кода API.

Синхронный интерфейс WebSocket API

# 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())

Асинхронный интерфейс WebSocket API

# 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())

Полная информация и инструкции по клиентской библиотеке WebSocket доступны в архиве кода библиотеки.

Нужна дополнительная помощь?