<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def after_commit_listener(self, session):
 """ Processing the changes. All new or changed items are now indexed. All deleted items are now removed from the index. """

        log.info('Commiting indexing orders for session %s' % session)
        try:
            if not any((session.index_new[self.cls_name],
                        session.index_dirty[self.cls_name],
                        session.index_deleted[self.cls_name])):
                return
            if session.redis is not None:
                self._queue_job(session.redis,
                                self.settings['redis.queue_name'],
                                self.index_operation_name,
                                session.index_new[self.cls_name],
                                session.index_dirty[self.cls_name],
                                session.index_deleted[self.cls_name],
                                self.settings)
            else:
                log.info('Redis not found, falling back to indexing synchronously without redis')
                self.index_operation(
                    session.index_new[self.cls_name],
                    session.index_dirty[self.cls_name],
                    session.index_deleted[self.cls_name],
                    self.settings
                )
            session.index_new[self.cls_name].clear()
            session.index_dirty[self.cls_name].clear()
            session.index_deleted[self.cls_name].clear()
        except AttributeError:
            log.warning('Trying to commit indexing orders, but indexing sets are not present.')