Using CacheControl#
CacheControl assumes you are using a requests.Session for your requests. If you are making ad-hoc requests using requests.get then you probably are not terribly concerned about caching.
There are two way to use CacheControl, via the wrapper and the adapter.
Wrapper#
The easiest way to use CacheControl is to utilize the basic wrapper. Here is an example:
import requests
import cachecontrol
sess = cachecontrol.CacheControl(requests.Session())
resp = sess.get('http://google.com')
This uses the default cache store, a thread safe in-memory dictionary.
Adapter#
The other way to use CacheControl is via a requests Transport Adapter.
Here is how the adapter works:
import requests
import cachecontrol
sess = requests.Session()
sess.mount('http://', cachecontrol.CacheControlAdapter())
resp = sess.get('http://google.com')
Under the hood, the wrapper method of using CacheControl mentioned above is the same as this example.
Use a Different Cache Store#
Both the wrapper and adapter classes allow providing a custom cache store object for storing your cached data. Here is an example using the provided FileCache from CacheControl:
import requests
from cachecontrol import CacheControl
# NOTE: This requires filelock be installed
from cachecontrol.caches import FileCache
sess = CacheControl(requests.Session(),
cache=FileCache('.webcache'))
The FileCache will create a directory called .webcache and store a file for each cached request.