nsetools API中get_quote设置cached=False报错问题求助
问题原因与解决方案
你的错误根源很清晰:get_quote() 方法并不支持 cached 这个关键字参数,你把 get_stock_codes() 的专属参数误用在了 get_quote() 上,这才触发了 TypeError。
官方文档里提到的 cached=False 是针对 get_stock_codes() 方法的,作用是避免获取缓存的股票代码列表,但这个参数完全不适用于 get_quote()。
解决缓存问题的正确方法
要让 get_quote() 每次都拉取最新的股票报价,有两种简单可行的方案:
方法1:每次调用前清除对应股票的缓存
nsetools 的 Nse 实例会把已获取过的股票报价缓存到 _quotes 属性中,你可以在每次调用 get_quote() 前手动移除目标股票的缓存条目:
from nsetools import Nse nse = Nse() # 每次获取前清除infy的缓存条目 nse._quotes.pop('infy', None) q = nse.get_quote('infy')
这样下次调用时就会重新请求API获取最新数据。
方法2:每次创建新的Nse实例
每个 Nse 实例的缓存是相互独立的,你可以直接在每次查询时新建一个实例:
from nsetools import Nse # 每次新建实例,绕过缓存获取最新报价 q = Nse().get_quote('infy')
这种方式更简洁,很适合你的定时查询场景。
额外提醒
注意不要过于频繁调用API(比如你设置的5秒一次),避免触发平台的限流机制,导致请求被拒绝。
内容的提问来源于stack exchange,提问作者Bhoopalan
相关产品推荐
相关产品推荐

