为什么 Airflow 最佳实践与 PEP8 规范相冲突?

问题描述 投票:0回答:1

Airflow 文档具有某些最佳实践,其中之一是避免顶级 Python 代码。这与 PEP8 规范形成鲜明对比。有人可以澄清一下吗?

python airflow pep8
1个回答
0
投票

PEP8 的介绍就表明特定于项目的指南优先于 PEP8:

许多项目都有自己的编码风格指南。如果发生任何冲突,此类特定于项目的指南优先适用于该项目。

所以,从技术上讲,Airflow 与 PEP8 并不冲突:) 另外,稍后几段:

风格指南是关于一致性的。与本风格指南的一致性很重要。项目内的一致性更为重要。一个模块或功能内的一致性是最重要的。

但是,要知道何时要不一致——有时风格指南的建议并不适用。如有疑问,请运用您的最佳判断。查看其他示例并决定哪个看起来最好。请随时询问!

最后一段相当关键:“有时风格指南的建议并不适用。”就 Airflow 而言,应该避免顶级 DAG 代码有一个非常合理的理由,并且与风格无关:所有顶级 Python 代码都会在解析 DAG 时执行。由于 DAG 的解析非常频繁(默认情况下每 30 秒一次),这可能会导致调度程序/DAG 解析过程的性能急剧下降。

文件顶部的导入语句也是顶级代码,因此如果一个模块需要很长时间才能导入(例如numpy),那么它可能会对调度程序产生不利影响,因此建议在上下文中导入这些模块任务的一部分,但绝大多数模块都可以按照 PEP8 毫无问题地导入 DAG 文件顶部的 Airflow DAG。老实说,我什至不认为 numpy 是一个问题,所以我打开了一个 PR 来用更务实的示例和描述来更新文档的这一部分

© www.soinside.com 2019 - 2024. All rights reserved.