| commit | 5779131b4cb62a3a513285f8fba0c675db07ae66 | [log] [tgz] |
|---|---|---|
| author | Jordan Cook <jordan.cook@pioneer.com> | Tue Sep 07 19:06:37 2021 |
| committer | Jordan Cook <jordan.cook@pioneer.com> | Tue Sep 07 19:35:03 2021 |
| tree | b821a3ff8c1b805e8ec010bf9c02a58288321fce | |
| parent | 310bab8047c714ee190b0eb8ac36838af1711308 [diff] |
Update changelog and Readme links
requests-cache is a transparent, persistent cache for the python requests library. It can substantially improve performance and reduce network traffic, making it an ideal companion for almost any application using requests.
Complete project documentation can be found at requests-cache.readthedocs.io.
requests library you're already familiar with. Add caching with a drop-in replacement for requests.Session, or install globally to add caching to all requests functions.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 )
To find out more about what you can do with requests-cache, see: