Skip to content

Randomize delay before retrying a request - #375

Draft
BigRoy wants to merge 1 commit into
developfrom
enhancement/retry-jitter
Draft

BigRoy wants to merge 1 commit into
developfrom
enhancement/retry-jitter

Conversation

@BigRoy

@BigRoy BigRoy commented Oct 30, 2026

Copy link
Copy Markdown
Member

Changelog Description

Retries after a 502/503 response or a connection error now wait a random time between 50% and 150% of the previous fixed delay: 1–3 s instead of 2 s after 502/503, and 0.05–0.15 s instead of 0.1 s after a connection error. Clients that failed at the same moment no longer retry at the same moment.

Context: ynput/ayon-launcher#129.

Additional info

When many clients start at once (e.g. 200 new farm machines running the AYON launcher) and the server answers 503, they all retried exactly 2 s later, hitting the server together again. Random delays spread the retries out.

The average delay stays the same, so the total wait time doesn't change. Exponential backoff would ease the load further, but it would also make failing requests wait longer, so it isn't part of this PR.

Testing notes:

  1. pytest tests/test_request_retries.py (no server needed).

@BigRoy BigRoy added the type: enhancement New feature or request label Oct 30, 2026
@BigRoy BigRoy mentioned this pull request Oct 30, 2026
1 task done

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant