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
相关产品推荐
相关产品推荐

