code: def prepare_on_all_hosts(self, query, excluded_host, keyspace=None):
          
          futures = []
          for host in tuple(self._pools.keys()):
              if host != excluded_host and host.is_up:
                  future = ResponseFuture(self, PrepareMessage(query=query, keyspace=keyspace),
                                              None, self.default_timeout)
  
                  # we don't care about errors preparing against specific hosts,
                  # since we can always prepare them as needed when the prepared
                  # statement is used.  Just log errors and continue on.
                  try:
                      request_id = future._query(host)
                  except Exception:
                      log.exception("Error preparing query for host %s:", host)
                      continue
  
                  if request_id is None:
                      # the error has already been logged by ResponsFuture
                      log.debug("Failed to prepare query for host %s: %r",
                                host, future._errors.get(host))
                      continue
  
                  futures.append((host, future))
  
          for host, future in futures:
              try:
                  future.result()
              except Exception:
                  log.exception("Error preparing query for host %s:", host)
docs: Prepare the given query on all hosts, excluding ``excluded_host``.
          Intended for internal use only.