Skip to main content

Ratelimit Python requests, but only if they're not served from the cache

Project description

ratelimit_requests_cache

Ratelimit requests in Python, but only if they're not served from the cache

This package combines the best bits of the ratelimit module and the requests_cache module. It will rate limit outgoing requests, but not count invocations if a request can be served from the cache.

Usage

import requests
import requests_cache
from ratelimit import sleep_and_retry
from ratelimit_requests_cache import limits_if_not_cached


@sleep_and_retry
@limits_if_not_cached(calls=1, period=1)
def get_from_httpbin(i):
    return requests.get(f'https://httpbin.org/anything?i={i}')


# Enable requests caching
requests_cache.install_cache()

# Notice that only the first ten requests will be ratelimited to 1 request / second
# After that, it's a lot quicker since requests can be served from the cache
# and the ratelimiter does not engage
for i in range(100):
    get_from_httpbin(i % 10)
    print(i)

Installation

python3 -m pip install ratelimit_requests_cache

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ratelimit_requests_cache-2023.10.30.tar.gz (2.6 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file ratelimit_requests_cache-2023.10.30.tar.gz.

File metadata

File hashes

Hashes for ratelimit_requests_cache-2023.10.30.tar.gz
Algorithm Hash digest
SHA256 a5a182db7768d902a05a39c38d71e592296b90164d3ca4a544995e988d832cd0
MD5 ff3ad1dd496bc6fe957adc83efe9c132
BLAKE2b-256 b31984e9ade47eef5630043ee7452544096d2dc5d84d04282358f27462be90b0

See more details on using hashes here.

File details

Details for the file ratelimit_requests_cache-2023.10.30-py3-none-any.whl.

File metadata

File hashes

Hashes for ratelimit_requests_cache-2023.10.30-py3-none-any.whl
Algorithm Hash digest
SHA256 ba1e54454f4e34b1bd5923f7c9f000ef7c3c6e2c53f6e11e10d1ccd2640ecdd0
MD5 aa840304813a68081d3d37f994091b15
BLAKE2b-256 5a627b2e22758595a7a4ec341a8b49b8d2316319d2d7060af5b71ca8a1ec8b6b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page