intuit / intuit/oauth-pythonclient

Cache requests to .well-known/openid_configuration/

Ouverte
#52 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Python
Étoiles
86
Forks
59
Métriques de merge des PR
Aucune PR mergée en 30 j

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_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?

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.