summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorJordan Cook <jordan.cook@pioneer.com>2021-04-16 21:26:09 -0500
committerJordan Cook <jordan.cook@pioneer.com>2021-04-16 21:29:38 -0500
commit583d960febe319de596ea0a9761f1bcb6bf2ddf6 (patch)
tree79f3e5aa1967ae32c36d547566a18f4ac0b6438d /examples
parentd34114a2baff04b1717b6ffe3779edb6e03b07d2 (diff)
downloadrequests-cache-583d960febe319de596ea0a9761f1bcb6bf2ddf6.tar.gz
Add example of logging non-cached requests
Diffstat (limited to 'examples')
-rwxr-xr-x[-rw-r--r--]examples/basic_usage.py0
-rwxr-xr-x[-rw-r--r--]examples/convert_cache.py0
-rwxr-xr-x[-rw-r--r--]examples/expiration.py0
-rwxr-xr-xexamples/log_requests.py46
-rwxr-xr-x[-rw-r--r--]examples/session_patch.py0
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