openbb_sec 公司事实提取器实际上从未缓存: 为每种声明类型重新下载完整的 companyfacts.json
□ 总结
openb sec.utils.company facts.get 标准化 Financials ()'通过新鲜的aiohttp client cache.CachedSession(expire after=3600*6)'获得SEC的全部companyfacts',但由于没有通过cache client cache'的论据,因此aiohttp client'默认为全新的、空的、正在处理中的CacheBackend ()'/DictCache ()'。 因此,6小时的缓存从不实际在呼叫之间缓存任何东西——每个呼叫都会得到自己的丢弃缓存,当函数返回时被丢弃. 将“Obb.ference.fundamental.indows”(),.balance()'和`.cash()'作为同一符号,它们都决心实现同样的功能和相同的SEC终点,下载相同的多兆字节有效载荷三次,而不是一次。
□ 环境
- " 开放 " 4.7.2
- " 开放式b-core " 1.6.13(备案时最新的PyPI)
- " openbb-sec " 1.6.7(立案时PyPI有最新数据) -Python 3.12, Linux(英语:
□ 根源
openbb sec/utils/company facts.py',get 标准化 金融()'--------------------- ' :
[Python] async def fetch(cik str: str) - > dict: url=f"https://data.sec.gov/api/xbrl/companyfacts/CIK{cik str}.json" (中文(简体) ). 如果使用缓存: 从 aiohttp client cache.session 导入缓存会话
与 CachedSession( 到期后=3600 * 6) 作为会话: 尝试 : resp = 等待 amake request(url,标题=HEADERS,会话=会话,超时=300) 终于: 正在等待会话. close () 其他情况: resp = 等待 amake request(url,标题=HEADERS,超时=300) . . . . . . . .
`cached session.-init' (在`aiohttp client cache/session.py'中)是:
```2ZZ
self.cache = 缓存或缓存Backend ()
上面的呼叫站点从未传出过cache',因此每次引用都得到新的CacheBackend ()',其respens'商店是一个简单的“DictCache ()”(见aiohttp client cache/backends/base.py')。 这一缓存被限定为Cached Casecast ' 事件,这是在每一通电话中创建和丢弃的 -- -- 通话之间没有任何东西持续存在,因此,6小时后结束'永远没有机会产生缓存。
inform statement.py'、abluary sheet.py'和cash flow.py'(同一目录)各自独立地称为get 标准化-财务',用于它们自己的报表类型,没有共享缓存或共享获取,尽管这三个字读取的是相同的基本`companyfacts' JSON,只是预测了与它不同的字段。
□复制/证据
直接取取的终点本身证实了所涉及的有效载荷大小:
$ 卷曲 - s- H “ 用户代理: 测试@ test.com” \
"https://data.sec.gov/api/xbrl/companyfacts/CIK000320193.json" (中文(简体) ). QQ wc-c.
3789099 (英语).
$ 卷曲 - s- H “ 用户代理: 测试@ test.com” \
"https://data.sec.gov/api/xbrl/companyfacts/CIK000199617.json" 维克-克.
7927352 (中文(简体) ).
这两个例子公司分别为3.8MB和7.9MB. 称为`Obb.greety.bundamental.information(符号,提供方="sec")', . . . . . . .
内容来源: OpenBB-finance/OpenBB