diff options
author | Jordan Cook <jordan.cook@pioneer.com> | 2021-08-27 18:48:10 -0500 |
---|---|---|
committer | Jordan Cook <jordan.cook@pioneer.com> | 2021-08-27 18:58:27 -0500 |
commit | 8f2b2e33b9e498d3549c443467dd1438679b8756 (patch) | |
tree | bbcf80f5faa74b96a39a2a17a30f468ac723b021 /examples | |
parent | 7bfa27e6987198be77acafb91d573f9a0acddf9f (diff) | |
download | requests-cache-8f2b2e33b9e498d3549c443467dd1438679b8756.tar.gz |
Add example with URL patterns
Diffstat (limited to 'examples')
-rwxr-xr-x | examples/url_patterns.py | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/examples/url_patterns.py b/examples/url_patterns.py new file mode 100755 index 0000000..0fddb86 --- /dev/null +++ b/examples/url_patterns.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python +# fmt: off +""" +An example of {ref}`url-patterns` +""" +from datetime import timedelta + +from requests_cache import CachedSession + +default_expire_after = 60 * 60 # By default, cached responses expire in an hour +urls_expire_after = { + 'httpbin.org/image': timedelta(days=7), # Requests for this base URL will expire in a week + '*.fillmurray.com': -1, # Requests matching this pattern will never expire + '*.placeholder.com/*': 0, # Requests matching this pattern will not be cached +} +urls = [ + 'https://httpbin.org/get', # Will expire in an hour + 'https://httpbin.org/image/jpeg', # Will expire in a week + 'http://www.fillmurray.com/460/300', # Will never expire + 'https://via.placeholder.com/350x150', # Will not be cached +] + + +def main(): + session = CachedSession( + cache_name='example_cache', + expire_after=default_expire_after, + urls_expire_after=urls_expire_after, + ) + return [session.get(url) for url in urls] + + +def _expires_str(response): + if not response.from_cache: + return 'N/A' + elif response.expires is None: + return 'Never' + else: + return response.expires.isoformat() + + +if __name__ == "__main__": + original_responses = main() + cached_responses = main() + for response in cached_responses: + print( + f'{response.url:40} From cache: {response.from_cache:}' + f'\tExpires: {_expires_str(response)}' + ) |