我正在使用 Celery Executor 和来自这个dockerfile的设置。
我正在将我的 dag 部署/usr/local/airflow/dags
到调度程序容器的目录中。
我可以使用以下命令运行我的 dag:
$ docker exec airflow_webserver_1 airflow backfill mydag -s 2016-01-01 -e 2016-02-01
我的 dag 包含一个简单的 bash 运算符:
BashOperator(command = "test.sh" ... )
操作员运行test.sh
脚本。
但是,如果test.sh
引用其他文件,例如callme.sh
,那么我会收到“找不到文件”错误。
e.g
$ pwd
/usr/local/airflow/dags/myworkflow.py
$ ls
myworkflow.py
test.sh
callme.sh
$ cat test.sh
echo "test file"
./callme.sh
$ cat callme.sh
echo "got called"
运行 myworkflow 时,调用 test.sh 的任务被调用,但因找不到 callme.sh 而失败。
我觉得这很混乱。与工人共享代码资源文件是我的责任还是气流的责任?如果是我的,那么推荐的方法是什么?我正在考虑使用 EFS 并将其安装在所有容器上,但对我来说它看起来非常昂贵。