VOOZH about

URL: https://pypi.org/project/requests-cache/

โ‡ฑ requests-cache ยท PyPI


Skip to main content

requests-cache 1.3.2

pip install requests-cache

Latest release

Released:

A persistent cache for python requests

Navigation

Unverified details

These details have not been verified by PyPI
Project links
Meta
  • License Expression: BSD-2-Clause
    SPDX License Expression
  • Author: Jordan Cook, Roman Haritonov
  • Tags cache , dynamodb , http , http-client , mongodb , performance , python-requests , redis , requests , sqlite , web , webscraping
  • Requires: Python >=3.8
  • Provides-Extra: all , dynamodb , mongodb , redis , security , yaml

Project description

๐Ÿ‘ Image

๐Ÿ‘ Build
๐Ÿ‘ Codecov
๐Ÿ‘ Documentation
๐Ÿ‘ Code Shelter

๐Ÿ‘ PyPI
๐Ÿ‘ Conda
๐Ÿ‘ Arch
๐Ÿ‘ PyPI - Python Versions
๐Ÿ‘ PyPI - Downloads

Summary

requests-cache is a persistent HTTP cache that provides an easy way to get better performance with the python requests library.

Complete project documentation can be found at requests-cache.readthedocs.io.

Features

  • Ease of use: Keep using the requests library you're already familiar with. Add caching with a drop-in replacement for requests.Session, or install globally to add transparent caching to all requests functions.
  • Performance: Get sub-millisecond response times for cached responses. When they expire, you still save time with conditional requests.
  • Persistence: Works with several storage backends including SQLite, Redis, MongoDB, and DynamoDB; or save responses as plain JSON files, YAML, and more
  • Expiration: Use Cache-Control and other standard HTTP headers, define your own expiration schedule, keep your cache clutter-free with backends that natively support TTL, or any combination of strategies
  • Customization: Works out of the box with zero config, but with a robust set of features for configuring and extending the library to suit your needs
  • Compatibility: Can be combined with other popular libraries based on requests

Quickstart

First, install with pip:

pipinstallrequests-cache

Then, use requests_cache.CachedSession to make your requests. It behaves like a normal requests.Session, but with caching behavior.

To illustrate, we'll call an endpoint that adds a delay of 1 second, simulating a slow or rate-limited website.

This takes 1 minute:

importrequests

session = requests.Session()
for i in range(60):
 session.get('https://httpbin.org/delay/1')

This takes 1 second:

importrequests_cache

session = requests_cache.CachedSession('demo_cache')
for i in range(60):
 session.get('https://httpbin.org/delay/1')

With caching, the response will be fetched once, saved to demo_cache.sqlite, and subsequent requests will return the cached response near-instantly.

Patching

If you don't want to manage a session object, or just want to quickly test it out in your application without modifying any code, requests-cache can also be installed globally, and all requests will be transparently cached:

importrequests
importrequests_cache

requests_cache.install_cache('demo_cache')
requests.get('https://httpbin.org/delay/1')

Headers and Expiration

By default, requests-cache will keep cached responses indefinitely. In most cases, you will want to use one of the two following strategies to balance cache freshness and performance:

Define exactly how long to keep responses:

Use the expire_after parameter to set a fixed expiration time for all new responses:

fromrequests_cacheimport CachedSession
fromdatetimeimport timedelta

# Keep responses for 360 seconds
session = CachedSession('demo_cache', expire_after=360)

# Or use timedelta objects to specify other units of time
session = CachedSession('demo_cache', expire_after=timedelta(hours=1))

See Expiration for more features and settings.

Use Cache-Control headers:

Use the cache_control parameter to enable automatic expiration based on Cache-Control and other standard HTTP headers sent by the server:

fromrequests_cacheimport CachedSession

session = CachedSession('demo_cache', cache_control=True)

See Cache Headers for more details.

Settings

The default settings work well for most use cases, but there are plenty of ways to customize caching behavior when needed. Here is a quick example of some of the options available:

fromdatetimeimport timedelta
fromrequests_cacheimport CachedSession

session = CachedSession(
 'demo_cache',
 use_cache_dir=True, # Save files in the default user cache dir
 cache_control=True, # Use Cache-Control response headers for expiration, if available
 expire_after=timedelta(days=1), # Otherwise expire responses after one day
 allowable_codes=[200, 400], # Cache 400 responses as a solemn reminder of your failures
 allowable_methods=['GET', 'POST'], # Cache whatever HTTP methods you want
 ignored_parameters=['api_key'], # Don't match this request param, and redact it from the cache
 match_headers=['Accept-Language'], # Cache a different response per language
 stale_if_error=True, # In case of request errors, use stale cache data if possible
)

Next Steps

To find out more about what you can do with requests-cache, see:

Project details

Unverified details

These details have not been verified by PyPI
Project links
Meta
  • License Expression: BSD-2-Clause
    SPDX License Expression
  • Author: Jordan Cook, Roman Haritonov
  • Tags cache , dynamodb , http , http-client , mongodb , performance , python-requests , redis , requests , sqlite , web , webscraping
  • Requires: Python >=3.8
  • Provides-Extra: all , dynamodb , mongodb , redis , security , yaml

Release history Release notifications | RSS feed

Download files

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

Source Distribution

requests_cache-1.3.2.tar.gz (100.2 kB view details)

Uploaded Source

Built Distribution

Filter files by name, interpreter, ABI, and platform.

If you're not sure about the file name format, learn more about wheel file names.

Copy a direct link to the current filters

requests_cache-1.3.2-py3-none-any.whl (70.6 kB view details)

Uploaded Python 3

File details

Details for the file requests_cache-1.3.2.tar.gz.

File metadata

  • Download URL: requests_cache-1.3.2.tar.gz
  • Upload date:
  • Size: 100.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for requests_cache-1.3.2.tar.gz
Algorithm Hash digest
SHA256 bdc3680931f98a1dea509d339ea6b45cea526945b47b250ce63ffd2744ee0b14
MD5 89f3a6d6374faccfa244d0ee1006575f
BLAKE2b-256 c3ae90a0f931c7f6b5a674b98c25ecb2593a173bcee14f0d8c148471df3d7b26

See more details on using hashes here.

Provenance

The following attestation bundles were made for requests_cache-1.3.2.tar.gz:

Publisher: deploy.yml on requests-cache/requests-cache

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file requests_cache-1.3.2-py3-none-any.whl.

File metadata

  • Download URL: requests_cache-1.3.2-py3-none-any.whl
  • Upload date:
  • Size: 70.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for requests_cache-1.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c52666c76b08daa94d05a99327dd24afc46f405abc044e8c2267b540f90673d0
MD5 27811e2804e7c38dab91390bec5de851
BLAKE2b-256 b0ffd87d1a7700463afc5440bec80cfbcb56ef929f05fbfdc946ce031b13d040

See more details on using hashes here.

Provenance

The following attestation bundles were made for requests_cache-1.3.2-py3-none-any.whl:

Publisher: deploy.yml on requests-cache/requests-cache

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

๐Ÿ‘ Image
AWS Cloud computing and Security Sponsor ๐Ÿ‘ Image
Datadog Monitoring ๐Ÿ‘ Image
Depot Continuous Integration ๐Ÿ‘ Image
Fastly CDN ๐Ÿ‘ Image
Google Download Analytics ๐Ÿ‘ Image
Pingdom Monitoring ๐Ÿ‘ Image
Sentry Error logging ๐Ÿ‘ Image
StatusPage Status page