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

ICICI Direct Breeze Connect启动后WebSocket立即关闭问题求助

ICICI Direct Breeze Connect API WebSocket订阅后立即关闭问题

我使用ICICI Direct Breeze Connect API文档中的示例代码时遇到以下问题:

  • 在PyCharm和AWS Cloud9 IDE中,成功订阅数据feed后WebSocket会立即关闭
  • 同一代码在Jupyter Notebook中运行完全正常,回调函数能返回预期数据
  • 已尝试卸载重装breeze_connect、检查WebSocket库版本,均未解决问题

使用的代码如下:

from breeze_connect import BreezeConnect
from time import sleep

api_key = ""
api_secret = ""
session_token = ""

breeze = BreezeConnect(api_key=api_key)
breeze.generate_session(api_secret=api_secret, session_token=session_token)

# Connect to websocket(it will connect to tick-by-tick data server)
breeze.ws_connect()

def on_ticks(tick):
    print("Ticks: {}".format(tick))

# Assign the callbacks.
breeze.on_ticks = on_ticks
sleep(2)

breeze.subscribe_feeds(
    exchange_code="NFO",
    stock_code="CNXBAN",
    product_type="options",
    expiry_date="11-Oct-2023",
    strike_price="45000",
    right="Call",
    get_exchange_quotes=True,
    get_market_depth=False,
)

可能的解决办法

  • 阻止主线程退出:普通Python脚本执行到代码末尾会终止主线程,WebSocket依赖的后台线程也会随之关闭,而Jupyter会保持内核运行。在代码末尾添加阻塞逻辑:
    # 在subscribe_feeds之后添加
    while True:
        sleep(1)
    # 或者用输入等待
    # input("按回车退出...")
    
  • 调整回调绑定顺序:先绑定回调函数再连接WebSocket,避免连接初期的事件无法被捕获:
    # 先绑定回调
    def on_ticks(tick):
        print("Ticks: {}".format(tick))
    breeze.on_ticks = on_ticks
    
    # 再连接WebSocket
    breeze.ws_connect()
    
  • 手动启动事件循环:如果breeze_connect底层依赖asyncio事件循环,普通脚本需要手动启动:
    import asyncio
    # 在代码末尾添加
    asyncio.get_event_loop().run_forever()
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 05:16:03