繁体   English   中英

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

[英]In Python's Airflow, how can I stop a task from running after a certain time?

我正在尝试使用Python的Airflow库。 我希望它定期抓取网页。

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

假设今天是每月20号。

假设开始start_date是本月15日。

如果我在20号启动调度程序,它将在20号刮5次该页面。 它将看到一个DAG实例假定在15号运行,并将在20号运行该DAG实例(第15个)。 然后它将在20号的16号运行DAG实例,依此类推。

简而言之,Airflow会尝试“追赶”,但这对于刮网没有意义。

有什么方法可以让Airflow在一段时间后将DAG实例视为失败?

此功能在Airflow的路线图中,但当前不存在。

请参阅: 问题#1155

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

气流的设计考虑了“回填”,因此路线图项目违背了其主要逻辑。

现在您可以更新start_date为这个特定的任务或整个DAG。

每个操作员都有一个开始日期http://pythonhosted.org/airflow/code.html#baseoperator

调度程序不适合停止。 如果今天运行它,则可以将任务start_date设置为今天,这对我来说似乎很合理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM