如何解决纳斯达克Python SDK客户端在开市/闭市时段的市场数据延迟问题?
如何解决纳斯达克Python SDK客户端在开市/闭市时段的市场数据延迟问题?
我正在使用纳斯达克Python SDK客户端获取NLSUTP主题的市场数据,通过NCDSClient拉取数据并做实时处理,再通过WebSocket转发收到的数据。正常交易时段,WebSocket每秒能收到多条响应,符合预期,但在开市和闭市时段,消息接收会出现严重延迟,有时超过15秒,甚至长达数分钟,这对我的实时应用造成了很大困扰。
代码片段
以下是相关代码部分:
def init_nasdaq_kafka_connection(topic): security_cfg = { "oauth.token.endpoint.uri": os.getenv("NASDAQ_KAFKA_ENDPOINT"), "oauth.client.id": os.getenv("NASDAQ_KAFKA_CLIENT_ID"), "oauth.client.secret": os.getenv("NASDAQ_KAFKA_CLIENT_SECRET"), } kafka_cfg = { "bootstrap.servers": os.getenv("NASDAQ_KAFKA_BOOTSTRAP_URL"), "auto.offset.reset": "latest", "socket.keepalive.enable": True, } ncds_client = NCDSClient(security_cfg, kafka_cfg) consumer = ncds_client.ncds_kafka_consumer(topic) logger.info(f"Success to connect NASDAQ Kafka server for topic {topic}.") return consumer # Usage consumer = init_nasdaq_kafka_connection("NLSUTP") while True: messages = consumer.consume(num_messages=1000000, timeout=0.25) if messages: response = makeRespFromKafkaMessages(messages) # Sending response via WebSocket
我写了一个脚本连接WebSocket并以{current_datetime}_{number_of_messages}.json格式保存数据:
正常交易时段的数据接收情况(每秒多条记录):
Data saved to ./websocket_data/2024-12-31_15-52-00-256_13.json Data saved to ./websocket_data/2024-12-31_15-52-00-754_12.json Data saved to ./websocket_data/2024-12-31_15-52-01-458_45.json Data saved to ./websocket_data/2024-12-31_15-52-01-956_26.json Data saved to ./websocket_data/2024-12-31_15-52-02-556_48.json Data saved to ./websocket_data/2024-12-31_15-52-03-310_45.json
闭市时段的数据接收情况(延迟明显):
Data saved to ./websocket_data/2024-12-31_15-54-48-756_405.json Data saved to ./websocket_data/2024-12-31_15-54-56-198_500.json Data saved to ./websocket_data/2024-12-31_15-55-05-019_1033.json Data saved to ./websocket_data/2024-12-31_15-55-21-788_2057.json Data saved to ./websocket_data/2024-12-31_15-55-42-214_1318.json Data saved to ./websocket_data/2024-12-31_15-56-00-091_1324.json Data saved to ./websocket_data/2024-12-31_15-56-15-703_1200.json Data saved to ./websocket_data/2024-12-31_15-56-32-602_1120.json Data saved to ./websocket_data/2024-12-31_15-56-46-802_1149.json Data saved to ./websocket_data/2024-12-31_15-57-00-099_940.json Data saved to ./websocket_data/2024-12-31_15-57-13-380_875.json Data saved to ./websocket_data/2024-12-31_15-57-24-969_936.json Data saved to ./websocket_data/2024-12-31_15-57-36-150_789.json Data saved to ./websocket_data/2024-12-31_15-57-49-312_1202.json Data saved to ./websocket_data/2024-12-31_15-58-03-939_1068.json Data saved to ./websocket_data/2024-12-31_15-58-22-238_1290.json Data saved to ./websocket_data/2024-12-31_15-58-43-967_1553.json Data saved to ./websocket_data/2024-12-31_15-59-12-348_1734.json Data saved to ./websocket_data/2024-12-31_15-59-42-903_2091.json Data saved to ./websocket_data/2024-12-31_16-00-11-254_2853.json Data saved to ./websocket_data/2024-12-31_16-01-17-148_5911.json Data saved to ./websocket_data/2024-12-31_16-01-49-192_2566.json Data saved to ./websocket_data/2024-12-31_16-02-05-338_5035.json Data saved to ./websocket_data/2024-12-31_16-02-27-056_2343.json Data saved to ./websocket_data/2024-12-31_16-02-39-615_36.json
其中,2024-12-31_16-02-27-056_2343.json文件里最后一条消息的时间戳是2024-12-31 16:00:01.072991,意味着我们过了2分26秒才收到这条数据。
观察结果
- 正常交易时段:WebSocket每秒能收到多条响应,符合预期
- 开市/闭市时段:
- 数据流延迟严重,延迟范围从15秒到数分钟不等
- WebSocket响应也会同步出现延迟
预期行为
数据即使在开市/闭市这种高活动时段也应该保持极低延迟,WebSocket每秒能收到多条响应,和正常时段表现一致。
疑问
- 纳斯达克Python SDK客户端在开市/闭市时段出现这种延迟是预期行为吗?
- 有没有配置选项或优化手段可以减少这类延迟?
- 这个问题会不会和服务器端限流、Kafka设置或网络延迟有关?
环境信息
- 纳斯达克Python SDK版本:最新版
- Python版本:3.10.6
- 操作系统:Windows 10
备注:内容来源于stack exchange,提问作者abdulsaboor
相关产品推荐
相关产品推荐

