code: def poll_heartbeat(self):
          
          with self._lock:
              if self._heartbeat_thread is not None:
                  if self._heartbeat_thread.failed:
                      # set the heartbeat thread to None and raise an exception.
                      # If the user catches it, the next call to ensure_active_group()
                      # will spawn a new heartbeat thread.
                      cause = self._heartbeat_thread.failed
                      self._heartbeat_thread = None
                      raise cause  # pylint: disable-msg=raising-bad-type
  
                  # Awake the heartbeat thread if needed
                  if self.heartbeat.should_heartbeat():
                      self._lock.notify()
                  self.heartbeat.poll()
docs: Check the status of the heartbeat thread (if it is active) and indicate
          the liveness of the client. This must be called periodically after
          joining with :meth:`.ensure_active_group` to ensure that the member stays
          in the group. If an interval of time longer than the provided rebalance
          timeout (max_poll_interval_ms) expires without calling this method, then
          the client will proactively leave the group.
  
          Raises: RuntimeError for unexpected errors raised from the heartbeat thread