Airflow 中文文档:常见问题

为什么我的任务没有安排好?

您的任务可能无法安排的原因有很多。 以下是一些常见原因:

  • 您的脚本是否“编译”,Airflow引擎是否可以解析它并找到您的DAG对象。 要对此进行测试,您可以运行airflow list_dags并确认您的DAG显示在列表中。 您还可以运行airflow list_tasks foo_dag_id --tree并确认您的任务按预期显示在列表中。 如果您使用CeleryExecutor,您可能需要确认这既适用于调度程序运行的位置,也适用于工作程序运行的位置。
  • 包含DAG的文件是否在内容的某处包含字符串“airflow”和“DAG”? 在搜索DAG目录时,Airflow忽略不包含“airflow”和“DAG”的文件,以防止DagBag解析导入与用户的DAG并置的所有python文件。
  • 你的start_date设置正确吗? 在传递start_date + scheduler_interval之后,Airflow调度程序会立即触发任务。
  • 您的schedule_interval设置正确吗? 默认schedule_interval是一天( datetime.timedelta(1) )。 您必须直接为实例化的DAG对象指定不同的schedule_interval ,而不是default_param ,因为任务实例不会覆盖其父DAG的schedule_interval
  • 您的start_date超出了在UI中可以看到的位置吗? 如果将start_date设置为3个月之前的某个时间,您将无法在UI的主视图中看到它,但您应该能够在Menu -> Browse ->Task Instances看到它。
  • 是否满足任务的依赖性。 直接位于任务上游的任务实例需要处于success状态。 此外,如果已设置depends_on_past=True ,则上一个任务实例需要成功(除非它是该任务的第一次运行)。 此外,如果wait_for_downstream=True ,请确保您了解其含义。 您可以从Task Instance Details页面查看如何设置这些属性。
  • 您需要创建并激活DagRuns吗? DagRun表示整个DAG的特定执行,并具有状态(运行,成功,失败,…)。 调度程序在向前移动时创建新的DagRun,但永远不会及时创建新的DagRun。 调度程序仅评估running DagRuns以查看它可以触发的任务实例。 请注意,清除任务实例(从UI或CLI)确实将DagRun的状态设置为恢复运行。 您可以通过单击DAG的计划标记来批量查看DagRuns列表并更改状态。
  • 是否达到了DAG的concurrency参数? concurrency定义了允许DAG running任务实例的数量,超过这一点,事物就会排队。
  • 是否达到了DAG的max_active_runs参数? max_active_runs定义允许的DAG running并发实例的数量。

您可能还想阅读文档的“计划程序”部分,并确保完全了解其进度。

如何根据其他任务的失败触发任务?

查看文档“概念Trigger Rule部分中的“ Trigger Rule部分

安装airflow [crypto]后,为什么连接密码仍未在元数据db中加密?

查看文档“配置”部分中的“ Connections部分

阅读全文/改进本文

猜你喜欢

转载自blog.csdn.net/wizardforcel/article/details/84637431