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

WebSocket Client

Мы рекомендуем библиотеку Python websocket-client. Она совместима как с Python 2, так и с Python 3, но для нового кода лучше использовать только Python 3, так как Python 2 скоро перестанет поддерживаться.
Библиотеку websocket-client можно скачать с Python Package Index (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 можно найти в архиве кодов библиотеки.