feat(utils): add retry utilities with exponential backoff #208
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR adds retry utilities to
utils.py, addressing E2.6 from the roadmap ("Add retry logic for network failures").What's Included
Two new functions in
src/skill_seekers/cli/utils.py:retry_with_backoff()- Sync version forrequestsoperationsretry_with_backoff_async()- Async version forhttpx.AsyncClientoperationsFeatures
Roadmap Alignment
Usage Example
Async version:
Log Output Example
Tests Included
7 new unit tests in
TestRetryWithBackoffandTestRetryWithBackoffAsync:test_successful_operation_first_trytest_successful_operation_after_retrytest_all_retries_failtest_exponential_backoff_timingtest_async_successful_operationtest_async_retry_then_successtest_async_all_retries_failIntegration Note
This PR provides the utility functions but does not modify existing scrapers. Once merged, the doc_scraper can be updated to use these utilities:
This keeps the PR focused and reviewable. Integration can be done in a follow-up PR if desired.
Contributed by the AI Writing Guide project.