WebSocket API v1/v2 - 推荐的 Python 库和使用示例

上次更新时间: 2025年4月1日

我们的 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 客户端库的完整详细信息和说明,请访问该库的代码存档

需要更多帮助吗?