self,
        job: Job,
        task_instance: TaskInstance,  
        ignore_all_deps: bool = False,
        ignore_depends_on_past: bool = False,
        wait_for_past_depends_before_skipping: bool = False,
        ignore_task_deps: bool = False,
        ignore_ti_state: bool = False,
        mark_success: bool = False,
        pickle_id: int | None = None,
        pool: str | None = None,
        external_executor_id: str | None = None,
    ):
        super().__init__(job)
        LoggingMixin.__init__(self, context=task_instance)
        self.task_instance = task_instance
        self.ignore_all_deps = ignore_all_deps
        self.ignore_depends_on_past = ignore_depends_on_past
        self.wait_for_past_depends_before_skipping = wait_for_past_depends_before_skipping
        self.ignore_task_deps = ignore_task_deps
        self.ignore_ti_state = ignore_ti_state
        self.pool = pool
        self.pickle_id = pickle_id
        self.mark_success = mark_success
        self.external_executor_id = external_executor_id
        
        
        self.terminating = False
        self._state_change_checks = 0
    def _execute(self) -> int | None: