https://github.com/apache/airflow/blob/main/airflow/dag_processing/manager.py#L773
Stats.decr("dag_processing.processes", tags={"file_path": file_path, "action": "timeout"})
                Stats.incr("dag_processing.processor_timeouts", tags={"file_path": file_path})
                
                Stats.incr("dag_file_processor_timeouts")
                processor.kill()
                
                self.waitables.pop(processor.waitable_handle)
                processors_to_remove.append(file_path)
                stat = DagFileStat(
                    num_dags=0,
                    import_errors=1,
                    last_finish_time=now,
                    last_duration=duration,
                    run_count=self.get_run_count(file_path) + 1,
                )
                self._file_stats[processor.file_path] = stat
        
        for proc in processors_to_remove:
            self._processors.pop(proc)
    def max_runs_reached(self):
        """:return: whether all file paths have been processed max_runs times."""
        if self._max_runs == -1:  
            return False
        for stat in self._file_stats.values():
            if stat.run_count < self._max_runs:
                return False
        if self._num_run < self._max_runs:
            return False
        return True
    def terminate(self):