code: def get_file(self, key, file):
          
          try:
              return self.cache.get_file(key, file)
          except KeyError:
              # cache miss, load into cache
              fp = self._dstore.open(key)
              self.cache.put_file(key, fp)
  
              # return from cache
              return self.cache.get_file(key, file)
docs: Implementation of :meth:`~simplekv.KeyValueStore.get_file`.
  
          If a cache miss occurs, the value is retrieved, stored in the cache and
          returned.
  
          If the cache raises an :exc:`~exceptions.IOError`, the retrieval cannot
          proceed: If ``file`` was an open file, data maybe been written to it
          already. The :exc:`~exceptions.IOError` bubbles up.
  
          It is possible for a caching error to occur while attempting to store
          the value in the cache. It will not be handled as well.