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.


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('')

This uses the default cache store, a thread safe in-memory dictionary.


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://', CacheControlAdapter())

resp = sess.get('')

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 lockfile be installed
from cachecontrol.caches import FileCache

sess = CacheControl(requests.Session(),

The FileCache will create a directory called .webcache and store a file for each cached request.