code: def _auto_commit(self, by_count=False):
          
          # Check if we are even supposed to do any auto-committing
          if (self._stopping or self._shuttingdown or (not self._start_d) or
                  (self._last_processed_offset is None) or
                  (not self.consumer_group) or
                  (by_count and not self.auto_commit_every_n)):
              return
  
          # If we're auto_committing because the timer expired, or by count and
          # we don't have a record of our last_committed_offset, or we've
          # processed enough messages since our last commit, then try to commit
          if (not by_count or self._last_committed_offset is None or
              (self._last_processed_offset - self._last_committed_offset
               ) >= self.auto_commit_every_n):
              if not self._commit_ds:
                  commit_d = self.commit()
                  commit_d.addErrback(self._handle_auto_commit_error)
              else:
                  # We're waiting on the last commit to complete, so add a
                  # callback to be called when the current request completes
                  d = Deferred()
                  d.addCallback(self._retry_auto_commit, by_count)
                  self._commit_ds.append(d)
docs: Check if we should start a new commit operation and commit