我试图使用Python的Airflow库。我希望它定期抓取一个网页。
我遇到的问题是,如果我的start_date
是几天前,当我启动调度程序时,它会从start_date
回填到今天。例如:
假设今天是本月20日。
假设start_date
是本月的第15个。
如果我在20日启动调度程序,它将在20日刮掉页面5次。它将看到DAG实例假设在15日运行,并将在20日运行该DAG实例(第15个实例)。然后它将在20日运行DAG实例,等等。
简而言之,Airflow将尝试追赶"但这对于网络抓取没有意义。
有没有办法让Airflow在一段时间后认为DAG实例失败了?
答案 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设置为今天,为我设置逻辑。