在Python的Airflow中,如何在一段时间后停止任务运行?

时间:2016-03-29 15:20:09

标签: python airflow

我试图使用Python的Airflow库。我希望它定期抓取一个网页。

我遇到的问题是,如果我的start_date是几天前,当我启动调度程序时,它会从start_date回填到今天。例如:

假设今天是本月20日。

假设start_date是本月的第15个。

如果我在20日启动调度程序,它将在20日刮掉页面5次。它将看到DAG实例假设在15日运行,并将在20日运行该DAG实例(第15个实例)。然后它将在20日运行DAG实例,等等。

简而言之,Airflow将尝试追赶"但这对于网络抓取没有意义。

有没有办法让Airflow在一段时间后认为DAG实例失败了?

2 个答案:

答案 0 :(得分:3)

此功能位于Airflow的路线图中,但目前尚不存在。

请参阅: Issue #1155

您可以使用BranchPythonOperator破解解决方案。正如文档中所述,请确保已设置depends_on_past=False(这是默认设置)。我没有设置气流,因此我目前无法测试并提供示例代码。

答案 1 :(得分:1)

Airflow的设计采用"回填"因此,路线图项目违背其主要逻辑。

现在,您可以更新此特定任务的start_date或整个dag。

每个运营商都有一个start_date http://pythonhosted.org/airflow/code.html#baseoperator

调度程序不会被停止。如果你今天运行它,你可以将你的任务start_date设置为今天,为我设置逻辑。