intuit / intuit/oauth-pythonclient

Cache requests to .well-known/openid_configuration/

オープン
#52 コメント 0 件 リアクション 0 件 担当者 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 を短くまとめたダイジェスト。