API WebSocket v1/v2 - Рекомендована бібліотека Python та приклади використання

Останнє оновлення: 1 квіт. 2025 р.

До нашого API WebSocket можна отримати доступ за допомогою будь-якої мови програмування, що підтримує 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.

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

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

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

# 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 доступні в архіві коду бібліотеки.

Потрібна додаткова допомога?