章节摘要:能跑不等于能合并。本章把 DAG 写成可评审的代码:命名、无副作用解析、密钥与幂等;把性能当成解析、数据库锁、XCom、冷启动四段治理;把测试分成结构断言、任务函数单测、导入与发布闸门。读完应能给团队一份合并检查单,而不是“在我机器上绿了”。
阅读完本章,你应当能够:
金句:测试定义什么叫对,发布管道保证它一直对。缺一截,绿的只是偶然。
命名、结构、幂等、文档字段、禁止事项。
解析、锁、XCom、执行器冷启动、池。
airflow 测试命令与 DAG 契约、分层验证、发布。
先约定怎么写,再约定怎么写才跑得动,最后约定没测试不许上。
6.1 怎么写 ──► 6.2 怎么写才不堵 ──► 6.3 没测试不上
6.1 把审查清单打印成合并模板:顶层副作用、catchup、密钥、幂等、owner。新 DAG 不走模板就打回,比上课有效。6.2 接到“Airflow 变慢”时按解析心跳、queued、running、Local 对照四问走,禁止直接加 Web 副本。6.3 结构测试必须进 CI,断言边和 catchup;导入测试必须用执行镜像,而不是开发笔记本的包集合。同步到调度器后保持暂停,冒烟再开,是契约层,不是胆小。
类比换成质检:规范是来料标准,性能是产线节拍,测试是出厂检。三道都过,才允许挂到生产这根调度轨道上。原文把 airflow test 升格为测试契约、把 DAG 可测试性写成成熟度门槛,本章把它落成你能写出来的断言,而不是成熟度模型海报。
只跑 linter 就合并:依赖边写反不会被 linter 看见。只加 Worker 治慢:锁和 XCom 会更热闹。只在笔记本测 import:Worker 缺 Provider 要到运行才爆。提交即取消暂停:契约层缺失,回滚无版本。用行覆盖率代替契约断言:catchup 仍可能为真。本章把误判收成闸门顺序,顺序本身就是规范。
到第 6 章结束,教程的动手链闭合:能写、能懂谁执行、能活过故障、能拒绝越权、能挡住坏图。缺测试的 DAG 仍只是个人脚本。把结构测试三条断言写进团队习惯,比把架构图贴在墙上更能保护调度器。
本章是教程的闸门,不是附录。前面所有字段:catchup、边、XCom 体积、执行器对照、探针、RBAC、Provider,都应能变成一条断言或一次抽查。变不成的,从最低集拿掉,免得壁纸化。读完本章,应能在不增加机器的前提下说出三件立刻能做的事:给关键 DAG 加 catchup 断言、把回填和在线分池、同步后先暂停再冒烟。三件做完,Airflow 才从个人脚本变成团队合同。合同需要牙齿,牙齿就是 CI 红灯。红灯烦人,绿而假更贵。
把三条立刻能做的事写成本周工单:关键 DAG 的 catchup 断言、回填与在线分池、发布后暂停。工单不完成,本章等于没读。阅读记录不能代替红灯。红灯来自 CI。CI 来自断言。断言来自你把契约字段当成测试对象。对象选错,测的是风格。风格测试过不了生产。生产只认窗口、边、密钥、镜像一致性。四样有灯,风格可以稍后。稍后不是永远。永远稍后的规范会壁纸化。壁纸化之后,只能靠事故重启规范。事故重启比红灯贵。选红灯。
本周三件工单:catchup 断言、回填分池、发布暂停。三件不做,阅读记录作废。作废不是惩罚,是诚实。诚实是本章相对前面各章的差别:前面可以读懂,本章必须做。做才会红。红才会改模板。模板才会流行。流行才会让契约字段变成肌肉。肌肉才会在夜发布仍在。仍在才会三同一。三同一才会回滚是反向同步而不是考古。考古结束于哈希。哈希结束于脚本讨厌错误对象。讨厌写进 CI。CI 是身体。身体本周长三条断言。三条是最低。最低今晚写。写了才允许说读完教程。读完的标志不是页数。是三件工单的状态。状态是完成。完成才 done。done 在生产目录只接受制品之后。制品在绿的流水线之后。流水线在断言之后。断言在本周。本周不做,教程停在第 5 章。第 5 章的门关了,第 6 章的牙还没长。牙是红灯。红灯烦人。烦人比事故便宜。便宜的牙今晚长。长完本章。本章结束教程。教程结束于闸门。闸门结束于你愿意把讨厌交给脚本。交给脚本,人才能睡。睡是运维资源。资源被闸门保护。保护结束全书动手链。链从最小 DAG 开始。开始于失败可见。可见结束于测试挡住。挡住结束于同一份。同一份结束。