0

我正在使用 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 并将其安装在所有容器上,但对我来说它看起来非常昂贵。

4

1 回答 1

0

对于 celery executor,您有责任确保每个工作人员都拥有运行作业所需的所有文件。

于 2017-08-11T05:51:03.920 回答