code: def put(self, requirement, handle):
          
          filename = self.generate_filename(requirement)
          for backend in list(self.backends):
              handle.seek(0)
              try:
                  backend.put(filename, handle)
              except CacheBackendDisabledError as e:
                  logger.debug("Disabling %s because it requires configuration: %s", backend, e)
                  self.backends.remove(backend)
              except Exception as e:
                  logger.exception("Disabling %s because it failed: %s", backend, e)
                  self.backends.remove(backend)
docs: Store a distribution archive in all of the available caches.
  
          :param requirement: A :class:`.Requirement` object.
          :param handle: A file-like object that provides access to the
                         distribution archive.