You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中以无限线程形式启动自定义BitMEX WebSocket程序?

如何将自定义BitMEX WebSocket程序作为无限线程运行?

你已经写好了自定义的WebSocket处理类,接下来只需要在主程序块里把它启动起来,并且让它持续运行即可。这里有两种常见的实现方式,根据你的项目需求选择:

方式一:直接阻塞主线程运行(适合单独运行该服务)

这种方式最简单,直接调用WebSocket实例的run_forever()方法,它会让WebSocket客户端在当前线程持续运行,直到连接断开或者程序被主动终止:

from bitmex_simple_websocket import BitMEXWebSocket
import json

class MyBitMEXWebsocket(BitMEXWebSocket):
    def on_message(self, ws, message):
        data = json.loads(message)
        if 'table' in data and data['table'] == 'tradeBin1m':
            print(data['data'][0])

if __name__ == '__main__':
    # 实例化自定义WebSocket客户端
    bitmex_ws = MyBitMEXWebsocket(endpoint='wss://www.bitmex.com/realtime?subscribe=tradeBin1m:XBTUSD')
    # 启动并持续运行WebSocket连接
    bitmex_ws.run_forever()

方式二:作为后台线程运行(不阻塞主线程,适合与其他业务逻辑共存)

如果你的项目还有其他代码需要执行,不想让WebSocket阻塞主线程,可以用Python的threading模块把它放到后台线程中:

from bitmex_simple_websocket import BitMEXWebSocket
import json
import threading

class MyBitMEXWebsocket(BitMEXWebSocket):
    def on_message(self, ws, message):
        data = json.loads(message)
        if 'table' in data and data['table'] == 'tradeBin1m':
            print(data['data'][0])

if __name__ == '__main__':
    bitmex_ws = MyBitMEXWebsocket(endpoint='wss://www.bitmex.com/realtime?subscribe=tradeBin1m:XBTUSD')
    
    # 创建后台线程,将WebSocket的run_forever方法作为执行目标
    ws_thread = threading.Thread(target=bitmex_ws.run_forever, daemon=True)
    # 启动后台线程
    ws_thread.start()
    
    # 这里可以编写你的其他主程序逻辑
    # 示例:保持主线程存活,直到捕获Ctrl+C信号
    try:
        while True:
            # 主线程可在此处理其他任务,或仅保持存活状态
            pass
    except KeyboardInterrupt:
        # 优雅关闭WebSocket连接
        bitmex_ws.close()
        print("WebSocket连接已关闭")

小提示

  • 标记线程为daemon=True后,当主线程退出时,后台的WebSocket线程会自动终止,避免程序残留进程。
  • 捕获KeyboardInterrupt信号可以实现优雅退出,避免强制终止导致的连接异常。

内容的提问来源于stack exchange,提问作者abudabi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:50:06