我需要一种方法来杀死运行KubernetesPodOperator
任务后超时,我的DAG
计划运行every 15 minutes
。
我尝试将dagrun_timeout
和max_active_runs
添加到DAG参数中,
我希望这会阻止DAG终止正在运行的任务并将其标记为失败
但实际情况是,DAG被标记为失败,任务将继续运行,并且由于DAG计划每15分钟运行一次,因此即使上一个DAG RUN中的任务仍在运行,DAG也会被触发并继续运行
有办法解决这个问题吗?
我需要一种方法来杀死运行KubernetesPodOperator
任务后超时,我的DAG
计划运行every 15 minutes
。
我尝试将dagrun_timeout
和max_active_runs
添加到DAG参数中,
我希望这会阻止DAG终止正在运行的任务并将其标记为失败
但实际情况是,DAG被标记为失败,任务将继续运行,并且由于DAG计划每15分钟运行一次,因此即使上一个DAG RUN中的任务仍在运行,DAG也会被触发并继续运行
有办法解决这个问题吗?
4条答案
按热度按时间h43kikqp1#
正如我们在评论部分所讨论的,我总结了讨论作为一个答案,以进一步帮助社区。
根据文档,参数 * dagrun_timeout * 指定DagRun在超时/失败之前应该运行多长时间,以便可以创建新的Dagrun。此外,超时仅对计划的Dageclipse强制执行,并且仅执行一次 active Dageclipse的数量== max_active_runs 。
截至目前,Airflow 1.10.2存在一个持续存在的问题,报告的问题描述为: 与此相关,当我们手动失败一个任务时,DAG任务停止运行,但DAG中的Pod不会被杀死并继续运行。 此描述与您的描述相符。虽然,Google Cloud Platform中的当前版本是 Airflow 1.10.6 和 Composer composer-1.10.5-airflow-1.10.6。因此,出于这个原因,我强烈建议您更新您的环境。
bvjveswy2#
我认为您使用的配置是在DAG级别超时并将DAG标记为失败。我建议使用任务级别超时,请参考here
execution_timeout(datetime.timedelta)-允许执行此任务示例的最大时间,如果超过此时间,则将引发并失败。
让我知道这是有帮助的!
ua4mk5z43#
我看到的解决方法是,当操作员超时时,然后有回退选项来杀死所有特定的运行pod。
https://airflow.apache.org/docs/apache-airflow-providers-dingding/stable/operators.html#sending-messages-from-a-task-callback
zbdgwd5y4#
不幸的是,我们仍然看到这个问题。另一种可能的解决方法是为pod本身指定activeDeadlineSeconds:
https://github.com/kubernetes-client/python/blob/master/kubernetes/docs/V1PodSpec.md#properties