Summary
requests-cache is a transparent, persistent 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
requestslibrary you're already familiar with. Add caching with a drop-in replacement forrequests.Session, or install globally to add caching to allrequestsfunctions. - 🚀 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
- ⚙️ 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
- 🕗 Expiration: Keep your cache fresh using Cache-Control, eagerly cache everything for long-term storage, use URL patterns for selective caching, or any combination of strategies
- ✔️ Compatibility: Can be combined with other popular libraries based on requests
Quickstart
First, install with pip:
pip install requests-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:
import requests
session = requests.Session()
for i in range(60):
session.get('http://httpbin.org/delay/1')
This takes 1 second:
import requests_cache
session = requests_cache.CachedSession('demo_cache')
for i in range(60):
session.get('http://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:
import requests
import requests_cache
requests_cache.install_cache('demo_cache')
requests.get('http://httpbin.org/delay/1')
Configuration:
A quick example of some of the options available:
# fmt: off
from datetime import timedelta
from requests_cache import CachedSession
session = CachedSession(
'demo_cache',
use_cache_dir=True, # Save files in the default user cache dir
cache_control=True, # Use Cache-Control headers for expiration, if available
expire_after=timedelta(days=1), # Otherwise expire responses after one day
allowable_methods=['GET', 'POST'], # Cache POST requests to avoid sending the same data twice
allowable_codes=[200, 400], # Cache 400 responses as a solemn reminder of your failures
ignored_parameters=['api_key'], # Don't match this param or save it in the cache
match_headers=True, # Match all request headers
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:
- User Guide
- API Reference
- Project Info
- A working example at Real Python: Caching External API Requests
- More examples in the examples/ folder
Metadata
Release files for requests-cache 0.9.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| requests_cache-0.9.7.tar.gz | 1.5 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| requests_cache-0.9.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.6 MB
Release files / requests_cache-0.9.7.tar.gz
| Download URL | requests_cache-0.9.7.tar.gz |
|---|---|
| Size | 1.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b7c26ea98143bac7058fad6e773d56c3442eabc0da9ea7480af5edfc134ff515
|
|
BLAKE2b-256 checksum How to use checksums |
660240737a22e3c006830433d6dc9e9d6debb52d9e9e412bab16d82c50d7be14
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.2.2 CPython/3.11.0 Linux/5.15.0-1022-azure
|
Release files / requests_cache-0.9.7-py3-none-any.whl
| Download URL | requests_cache-0.9.7-py3-none-any.whl |
|---|---|
| Size | 48.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3f57badcd8406ecda7f8eaa8145afd0b180c5ae4ff05165a2c4d40f3dc88a6e5
|
|
BLAKE2b-256 checksum How to use checksums |
65a8404ed794200edecf53f952066a8d33887924c6956ef0db71fccb90f1f68f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.2.2 CPython/3.11.0 Linux/5.15.0-1022-azure
|