'Get a read transaction on a file cache item.
Returns a ReadTransaction context manager and opens the cache file for
reading.  You can use it like this:
with file_cache_object.read_transaction(key) as cache_file:
cache_file.read()'

def read_transaction(self, key):

    return ReadTransaction(self._get_lock(key), (lambda : open(self.cache_path(key))))
