google-auth-library-python
google-auth-library-python copied to clipboard
Add support for an Asynchronous Timeout Context Manager
The Asynchronous Authorized Session API needs to support max_allowed_time as a parameter to the request method, to allow users to configure the total method execution time i.e. if the method is run longer than this, then a timeout exception is raised.
An asynchronous timeout context manager can be implemented to support this, similar to google.auth.transport.requests.TimeoutGuard which will enforce timeout on an asynchronous block of code using asyncio.wait_for() and keep the timeout logic separate from the core AuthorizedSession.request API logic.
Why do we not re-use the synchronous timeout guard?
- to keep the sync and async code paths separate.
- It is implemented specifically to support the timeout type for the underlying
requestsAPI i.e. atuple. - It will not enforce timeout on an async block of code and will not raise an exception until the async block of code has completed.