我正在使用Celery执行程序和此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,但它对我来说看起来非常昂贵。
答案 0 :(得分:0)
对于芹菜执行者,您有责任确保每个工作人员都拥有运行作业所需的所有文件。