Aiohttp-retry

Latest version: v2.8.3

Safety actively analyzes 630169 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 4 of 5

2.3.4

Related issues:
https://github.com/inyutin/aiohttp_retry/issues/29

2.3.3

Discussion was here: https://github.com/inyutin/aiohttp_retry/pull/13

2.3.2

Related issues:
- https://github.com/inyutin/aiohttp_retry/issues/23

2.3.1

Related issues:
- https://github.com/inyutin/aiohttp_retry/issues/22
- https://github.com/inyutin/aiohttp_retry/issues/24

2.3

You can define your own timeouts logic or use:
- ExponentialRetry with exponential backoff
- RandomRetry for random backoff
- ListRetry with backoff you predefine by list

2.2

RetryClient` add *current attempt number* to `request_trace_ctx` (for more info see [aiohttp doc](https://docs.aiohttp.org/en/stable/client_advanced.html#aiohttp-client-tracing)).

python
import logging
import sys
from types import SimpleNamespace

from aiohttp import ClientSession, TraceConfig, TraceRequestStartParams

from aiohttp_retry import RetryClient, RetryOptions


handler = logging.StreamHandler(sys.stdout)
logging.basicConfig(handlers=[handler])
logger = logging.getLogger(__name__)
retry_options = RetryOptions(attempts=2)


async def on_request_start(
session: ClientSession,
trace_config_ctx: SimpleNamespace,
params: TraceRequestStartParams,
) -> None:
current_attempt = trace_config_ctx.trace_request_ctx['current_attempt']
if retry_options.attempts <= current_attempt:
logger.warning('Wow! We are in last attempt')


async def main():
trace_config = TraceConfig()
trace_config.on_request_start.append(on_request_start)
retry_client = RetryClient(retry_options=retry_options, trace_configs=[trace_config])

response = await retry_client.get('https://httpstat.us/503', ssl=False)
print(response.status)

await retry_client.close()

Page 4 of 5

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.