TGViewer
开发者工具箱|编程·开发工具·资源 开发者工具箱|编程·开发工具·资源 @devtoolboxhub · 779 subscribers
Post #1449 6
Apache Airflow与.NET 10集成指南

通过HTTP集成Apache Airflow 3与.NET 10,无需用C#重写DAG。服务端保持Airflow负责调度与执行,.NET仅通过REST API/v2触发DAG Run、认证JWT并轮询状态。指南覆盖端到端流程:生成可追踪的dag_run_id、正确序列化config、复用令牌、处理401后自动续期、设置超时与取消传播。

预备环境需.NET 10 SDK、Docker Compose 2.14+、至少4GB内存。仓库提供Airflow 3.3.0、PostgreSQL 16及示例DAG。使用LocalExecutor以简化测试。
认证:POST /auth/token获取JWT,之后通过Authorization: Bearer发送。客户端读取exp避免频繁刷新,并用SemaphoreSlim防止并发续期。
触发:POST /api/v2/dags/{dag_id}/dagRuns,必需字段dag_run_id、conf、logical_date(可null)。响应返回DAG Run对象,state初始为queued。
监控:GET /api/v2/dags/{dag_id}/dagRuns/{dag_run_id},轮询间隔5-10秒,直到state为success、failed或canceled。使用CancellationTokenSource设置总超时(如10分钟)。
关键实践:dag_run_id应包含业务键以确保幂等性;conf只传小引用(ID、URI),不传密文或大负载;失败时区分401(续期)、403(权限不足)等,仅GET允许指数退避重试。


完整代码示例(含Docker compose、客户端实现、Minimal API)见仓库BlogSamples/Orchestration/Airflow。

#开发者 #工具 #ApacheAirflow #dotnet10 #CSharp #DAG #JWT #DevOps #API
@DevToolboxHub
More from @devtoolboxhub
  1. Sep 27, 2026Instagram 字体生成器:把普通文字换成 Unicode 样式 Instagram 字体生成器是一类在线工具,把普通字母转换成外观不同的 Unicode 字符,再复制粘贴到…
  2. Sep 27, 2026用一个下午审计公司里的重复性工作 多数公司不需要耗时半年的转型项目,才能发现时间到底流失在哪里。花几个小时追踪三个真实工作流,就能看出很多问题。关键不是问团队哪里效率低,也不是凭记…
  3. Sep 27, 2026竞品关键词调研的自动化流程 从竞品差距分析导出两万个关键词,约一半只是同一词换了词序。真正的瓶颈在导出之后那一小时:一个好问题变成一堵近似重复词组成的墙,外加三种不同口径的搜索量。…
  4. Sep 26, 2026PostgreSQL 复制槽上限参数 max_replication_slots 解析 max_replication_slots 决定共享内存中复制槽数组的长度,仅此而已。它不决…
  5. Sep 26, 2026五仓库架构踩坑:Gitlink 与双 CI Flude 团队复盘了多仓库架构的实践代价。项目从第一分钟起就选择拆分成独立仓库,Pipeline、engine、design-docs…
  6. Sep 26, 2026Xeno Core:TypeScript 后端架构框架 Node.js 复杂系统的架构选型往往决定代码的长期命运。开发者常在两条路之间纠结:要么依赖重度使用实验性装饰器和反射(如…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →