| commit | ad9c80f0baa21fb6b0e97e6575eadf714034f3b7 | [log] [tgz] |
|---|---|---|
| author | dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> | Sat Mar 05 16:06:49 2022 |
| committer | Jordan Cook <jordan.cook@pioneer.com> | Thu Mar 10 17:41:54 2022 |
| tree | 41bf7d33a6fb10a6dd8de7d4ceec6340e05128c2 | |
| parent | e85e3c0c8366fdb9f620d3d004ed90fa558f132b [diff] |
Bump dev dependencies and GitHub Actions Bump actions/checkout from 2 to 3 Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v2...v3) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Bump furo from 2022.2.14.1 to 2022.3.4 Bumps [furo](https://github.com/pradyunsg/furo) from 2022.2.14.1 to 2022.3.4. - [Release notes](https://github.com/pradyunsg/furo/releases) - [Changelog](https://github.com/pradyunsg/furo/blob/main/docs/changelog.md) - [Commits](https://github.com/pradyunsg/furo/compare/2022.02.14.1...2022.03.04) --- updated-dependencies: - dependency-name: furo dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Bump actions/setup-python from 2 to 3 Bumps [actions/setup-python](https://github.com/actions/setup-python) from 2 to 3. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/v2...v3) --- updated-dependencies: - dependency-name: actions/setup-python dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> deps
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.
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: