intuit / intuit/oauth-pythonclient

Cache requests to .well-known/openid_configuration/

未关闭
#52 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Python
星标
86
派生
59
PR 合并指标
30 天内没有已合并 PR

描述

(related to https://github.com/intuit/oauth-pythonclient/issues/18)

# Summary
`.well-known/openid_configuration/` is a stable resource that is not expected to change between requests. If a caller constructs an AuthClient on every request (which I presume is quite common), then they will hit this endpoint, incurring latency costs and potential for failure. Given the latency on this endpoint, I would imagine these duplicate requests are not cheap to Intuit either.

This redundancy exacerbates issues like https://github.com/intuit/oauth-pythonclient/issues/47,

## Solution
Currently `get_discovery_doc` is called each time an `AuthClient` is constructed, and attached to the `Session` extended by `AuthClient`

I would propose instead:
- Do not call `get_discovery_doc` with a `session` arg -- it's a static resource that you can access without any auth.
- Annotate `get_discovery_doc` with `@lru_cache` [(docs)](https://docs.python.org/3/library/functools.html#functools.lru_cache) to cache results in-memory for each set of arguments. This is a python builtin.

Happy to contribute a PR for this if interested. I imagine this will provide pretty major cost savings to both Intuit (due to dramatic reduction in duplicate requests) and callers (due to saved compute and less network congestion)

@robert-mings If contributed, would you be open to something like this?

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。