使用SubDagOperator的schedule_interval和其他陷阱

时间:2018-07-12 09:19:59

标签: airflow airflow-scheduler

Airflow documentation明确指出

  

SubDAG必须具有时间表并已启用。如果SubDAG的时间表   设置为None或@ once,SubDAG将成功执行而无需完成   任何东西

尽管我们必须遵守文档,但我发现即使schedule_interval设置为None@once,它们也不会打h。 Here's我的工作示例。


我目前对Airflow s(或SubDagOperator s)的了解(仅两周前听说subdag


我的问题是

  • 为什么我的示例无法正常工作?
  • 为什么我的示例起初不起作用(按照docs)?
  • SubDagOperator与其他operator的行为之间有细微的差别吗?
  • 当存在已知问题的解决方案时,为什么uproar against SubDagOperators这么多?

我将puckel/docker-airflow

一起使用
  • Airflow 1.9.0-4
  • Python 3.6-slim
  • CeleryExecutorredis:3.2.7

1 个答案:

答案 0 :(得分:1)

如果您只运行一次DAG,那么SubDags可能不会有任何问题(如您的示例所示)-尤其是当您有大量可用的工作槽时。尝试让示例中的一些DagRun累积起来,如果尝试删除并重新运行某些示例,则看一切运行是否顺利。

社区建议不要使用SubDags,因为当您需要重新运行旧的DagRun或运行较大的回填时,会发生意外行为。

并不是说DAG不能正常工作,而是更多可能发生的意外事件可能会影响您的工作流程,而当您获得回报时,看起来更好的DAG则不值得冒险。

即使存在已知的解决方案,实现它们也可能不值得。