intuit / intuit/oauth-pythonclient
Cache requests to .well-known/openid_configuration/
- Ngôn ngữ chính
- Python
- Star
- 86
- Fork
- 59
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
(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?
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Đánh giá
Issue này chưa được đánh giá.