diff options
author | Jordan Cook <jordan.cook@pioneer.com> | 2021-04-16 21:26:09 -0500 |
---|---|---|
committer | Jordan Cook <jordan.cook@pioneer.com> | 2021-04-16 21:29:38 -0500 |
commit | 583d960febe319de596ea0a9761f1bcb6bf2ddf6 (patch) | |
tree | 79f3e5aa1967ae32c36d547566a18f4ac0b6438d /examples | |
parent | d34114a2baff04b1717b6ffe3779edb6e03b07d2 (diff) | |
download | requests-cache-583d960febe319de596ea0a9761f1bcb6bf2ddf6.tar.gz |
Add example of logging non-cached requests
Diffstat (limited to 'examples')
-rwxr-xr-x[-rw-r--r--] | examples/basic_usage.py | 0 | ||||
-rwxr-xr-x[-rw-r--r--] | examples/convert_cache.py | 0 | ||||
-rwxr-xr-x[-rw-r--r--] | examples/expiration.py | 0 | ||||
-rwxr-xr-x | examples/log_requests.py | 46 | ||||
-rwxr-xr-x[-rw-r--r--] | examples/session_patch.py | 0 |
5 files changed, 46 insertions, 0 deletions
diff --git a/examples/basic_usage.py b/examples/basic_usage.py index 5234e43..5234e43 100644..100755 --- a/examples/basic_usage.py +++ b/examples/basic_usage.py diff --git a/examples/convert_cache.py b/examples/convert_cache.py index ce4f18f..ce4f18f 100644..100755 --- a/examples/convert_cache.py +++ b/examples/convert_cache.py diff --git a/examples/expiration.py b/examples/expiration.py index 4afa5fa..4afa5fa 100644..100755 --- a/examples/expiration.py +++ b/examples/expiration.py diff --git a/examples/log_requests.py b/examples/log_requests.py new file mode 100755 index 0000000..035cc4e --- /dev/null +++ b/examples/log_requests.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python3 +""" +An example of testing the cache to prove that it's not making more requests than expected. +""" +from contextlib import contextmanager +from logging import basicConfig, getLogger +from unittest.mock import patch + +import requests + +from requests_cache import CachedSession +from requests_cache.session import OriginalSession, set_response_defaults + +basicConfig(level='INFO') +logger = getLogger('requests_cache.examples') +# Uncomment for more verbose debug output +# getLogger('requests_cache').setLevel('DEBUG') + + +@contextmanager +def log_requests(): + """Context manager that mocks and logs all non-cached requests""" + real_response = set_response_defaults(requests.get('http://httpbin.org/get')) + with patch.object(OriginalSession, 'send', return_value=real_response) as mock_send: + session = CachedSession('cache-test', backend='sqlite') + session.cache.clear() + yield session + cached_responses = session.cache.responses.values() + + logger.debug('All calls to Session._request():') + logger.debug(mock_send.mock_calls) + + logger.info(f'Responses cached: {len(cached_responses)}') + logger.info(f'Requests sent: {mock_send.call_count}') + + +def main(): + """Example usage; replace with any other requests you want to test""" + with log_requests() as session: + for i in range(10): + response = session.get('http://httpbin.org/get') + logger.debug(f'Response {i}: {type(response).__name__}') + + +if __name__ == '__main__': + main() diff --git a/examples/session_patch.py b/examples/session_patch.py index f84e72e..f84e72e 100644..100755 --- a/examples/session_patch.py +++ b/examples/session_patch.py |