Cache requests to .well-known/openid_configuration/
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 68/100
- Issue type
- Feature
- Clarity
- Clearly specified
- Activity status
- Stale
- Tech stack
- python
- Domain
- api, authentication
Research direction
Start at get_discovery_doc and the AuthClient construction path described in the issue, then inspect how the discovery document is currently requested and attached to the Session. Confirm that repeated AuthClient construction reuses cached discovery results without requiring a session, and verify the existing test suite covers the behavior.
Written by the indexing model from the issue text.
Description
(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_docwith asessionarg -- it's a static resource that you can access without any auth. - Annotate
get_discovery_docwith@lru_cache(docs) 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?
- Dominant language
- Python
- Stars
- 86
- Forks
- 59
- PR merge metrics
- No merged PRs in 30d
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from intuit/oauth-pythonclient
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
intuit/oauth-pythonclient#56 ·
-
input Open
Difficulty 5/5 Over a week Newbie friendliness 10/100
intuit/oauth-pythonclient#55 · 2 comments ·
-
Difficulty 4/5 3-5 days Newbie friendliness 25/100
intuit/oauth-pythonclient#47 · 1 comment · 1 reaction ·
-
Difficulty 3/5 1-2 days Newbie friendliness 20/100
intuit/oauth-pythonclient#38 · 3 comments ·
-
Difficulty 3/5 1-2 days Newbie friendliness 35/100
intuit/oauth-pythonclient#37 · 1 comment ·
All issues in intuit/oauth-pythonclient
Similar issues
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
learningequality/ricecooker#747 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
BSData/horus-heresy-3rd-edition#3171 ·
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
run-llama/llama_index#23199 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
KhronosGroup/glTF-Blender-IO#2769 ·