def _is_execution_queue_item_runnable(liveaction_db, execution_queue_item_db):
        """
        Return True if a particular execution request is runnable.

        The status of the liveaction could have been changed by one of the policies and that could
        make execution not runnable anymore.
        """
        valid_status = [
            action_constants.LIVEACTION_STATUS_REQUESTED,
            action_constants.LIVEACTION_STATUS_SCHEDULED,
            action_constants.LIVEACTION_STATUS_DELAYED,
        ]

        if liveaction_db.status in valid_status:
            return True

        action_execution_id = str(execution_queue_item_db.action_execution_id)
        liveaction_id = str(execution_queue_item_db.liveaction_id)
        queue_item_id = str(execution_queue_item_db.id)
        extra = {"queue_item_id": queue_item_id}

        LOG.info(
            '[%s] Ignoring Liveaction "%s" with status "%s" after policies are applied.',
            action_execution_id,
            liveaction_id,
            liveaction_db.status,
            extra=extra,
        )

        ActionExecutionSchedulingQueue.delete(execution_queue_item_db)

        return False

        Return True if a particular execution request is runnable.

        The status of the liveaction could have been changed by one of the policies and that could
        make execution not runnable anymore.
        
st2actions/st2actions/scheduler/handler.py