如何在Airflow中实施轮询?

时间:2018-01-14 09:49:09

标签: airflow apache-airflow

我想使用Airflow来实现定期轮询外部系统(ftp服务器等)的数据流,检查符合特定条件的新文件,然后为这些文件运行一堆任务。现在,我是Airflow的新手并且读到传感器是你将用于这种情况的东西,我实际上设法编写了一个传感器,当我为它运行“气流测试”时工作正常。但我对传感器的poke_interval与DAG调度的关系有点困惑。我该如何为我的用例定义这些设置?或者我应该使用其他方法吗?我只是希望Airflow在这些文件可用时运行任务,并且在没有新文件可用的情况下不会使仪表板出现故障。

1 个答案:

答案 0 :(得分:5)

您的理解是正确的,使用传感器是您想要轮询的方法,可以使用现有的传感器,也可以实现自己的传感器。

但是,它们始终是DAG的一部分,并且它们不会在其边界之外执行。 DAG执行取决于start_dateschedule_interval,但您可以利用此传感器和传感器来实现某种DAG,具体取决于外部服务器的状态:一种可能的方法是启动整个DAG检查条件是否发生的传感器,如果条件不满足则决定跳过整个DAG(您可以通过设置{skipped确保传感器将下游任务标记为failed而不是soft_fail 1}}参数True)。通过使用最频繁的计划选项(* * * * *),您可以使用一分钟的轮询间隔。如果确实需要最短的轮询时间,您可以调整传感器的poke_intervaltimeout参数。

但请记住,Airflow本身可能无法保证执行时间,因此对于非常短的轮询时间,您可能想要研究替代方案(或至少考虑我刚刚分享的方法的不同方法)。 / p>