Skip to content

Conversation

@beaufour
Copy link
Collaborator

Summary

  • Add opt-in proactive rate limiting to prevent exceeding Flickr's 3600 queries/hour limit
  • Configure with flickr_api.set_rate_limit(requests_per_hour=3600) (~1 request/second)
  • Complements existing HTTP 429 retry handling by throttling requests before hitting limits
  • Query status with get_rate_limit() and get_rate_limit_status()

Addresses: beaufour/flickr-download#93

Test Plan

  • 17 new unit tests for throttling behavior
  • All 271 tests pass
  • Linting passes
  • Manual testing with real Flickr API calls

🤖 Generated with Claude Code

beaufour and others added 4 commits January 25, 2026 12:03
Documents the approach for opt-in rate limiting to prevent exceeding
Flickr's 3600 queries/hour limit. Complements existing 429 retry handling.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implement opt-in rate limiting that throttles requests to respect
Flickr's documented 3600 requests/hour limit. This is proactive
throttling (sleeping before requests) as opposed to the existing
reactive retry handling (retrying after 429 responses).

New public functions:
- set_rate_limit(requests_per_hour) - Enable/disable rate limiting
- get_rate_limit() - Get current configuration
- get_rate_limit_status() - Get detailed status including interval

Internal function _maybe_wait_for_rate_limit() is called at the start
of _make_request_with_retry() to sleep if necessary before making
each request.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add exports for set_rate_limit, get_rate_limit, and
get_rate_limit_status to make them accessible via
flickr_api.set_rate_limit() etc.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@beaufour beaufour merged commit 3a1b5b7 into master Jan 25, 2026
5 checks passed
@beaufour beaufour deleted the rate-limiting branch January 25, 2026 19:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant