使用findatapy从Bloomberg导入指数成分股(INDX_MEMBERS)遇Redis连接错误
解决findatapy获取Bloomberg指数成分股时的Redis连接错误
我来帮你搞定这个问题!从错误日志来看,核心问题其实不是指数相关操作,而是Redis连接失败——findatapy默认会用Redis做数据缓存,但你的本地Redis服务没启动,导致连接被拒绝(Error 10061)。下面是具体的解决步骤:
1. 启动本地Redis服务
错误提示里“target machine actively refused it”说明Redis没在默认端口6379运行,先把Redis服务启动起来:
- Windows:打开「服务管理器」,找到Redis服务,右键点击「启动」;或者打开命令行,运行
redis-server启动服务。 - Linux:执行
sudo systemctl start redis启动服务,若要开机自启可以加enable参数。 - Mac:用Homebrew安装的话,执行
brew services start redis启动服务。
2. 或者直接禁用findatapy的缓存功能
如果你暂时不需要缓存,可以在MarketDataRequest里添加参数禁用缓存,这样就不会尝试连接Redis了:
from findatapy.util import SwimPool; SwimPool() from findatapy.market import Market, MarketDataRequest, MarketDataGenerator market = Market(market_data_generator=MarketDataGenerator()) md_request = MarketDataRequest( start_date='22 Mar 2018', data_source='bloomberg', tickers=['S&P/TSX60 Index'], vendor_tickers=['SPTSX60 Index'], fields=['INDX_MEMBERS'], cache_algo='cache_algo_return_no_cache' # 关键:禁用缓存 ) df = market.fetch_market(md_request)
3. 额外验证:确认指数字段和权限
虽然之前其他字段正常,但还是要再确认:
INDX_MEMBERS确实是Bloomberg获取指数成分股的正确字段- 你的Bloomberg终端有权限访问
SPTSX60 Index的成分股数据
先尝试上述前两个方案,应该能解决Redis连接的问题,进而获取指数成分股数据。
内容的提问来源于stack exchange,提问作者mcb
相关产品推荐
相关产品推荐

