You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Airflow初始化SensorOperator时的工作目录及文件读取报错问题

Airflow 相关问题解答

问题1:Airflow在初始化SensorOperator时处于哪个目录?

Airflow初始化SensorOperator(以及所有Operator)时,运行目录是调度器(Scheduler)所在容器的工作目录。默认Docker Airflow镜像的工作目录为/opt/airflow。
注意:Operator的初始化逻辑是在Scheduler进程中执行的,而非Worker进程。

问题2:自定义GithubStarsSensor类(继承BaseSensorOperator)在__init__方法中调用read_stars_from_file读取stars.json时触发FileNotFoundError

问题原因

Operator的__init__方法在Scheduler容器内执行,而你提到的stars.json存储在Worker的用户目录中,两个容器的文件系统相互隔离,Scheduler无法访问Worker容器内的文件路径,因此触发文件找不到的错误。

解决方案

  • 调整代码逻辑:将文件读取操作从__init__方法移到Sensor的poke方法中。poke方法是在Worker进程中执行的,此时可以正常访问Worker容器内的文件路径。
  • 共享文件路径:使用Docker卷(volume)将存储stars.json的目录同时挂载到Scheduler容器和Worker容器的相同路径下,让两个容器都能访问该文件。
  • 替换本地文件方案:改用Airflow XCom或外部数据库传递数据,彻底避免跨容器的文件访问问题。

内容的提问来源于stack exchange,提问作者Alexander Lopatin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 21:50:35