Task 실행관련 질문입니다.
안녕하세요!
'Bash Operator & 외부 쉘파일 수행하기' 강의를 듣고 실습하던 중 에러가 생겨서, 해결을 시도했는데 계속해서 실패해서 질문을 남겨봅니다!
airflow를 실행하고 태스크를 수행하면 fail이 뜨는데, 로그를 확인하면 파일을 찾을 수 없다고 합니다.
[2023-10-12, 14:12:25 KST] {subprocess.py:93} INFO - /bin/bash: line 1: /opt/***_log/plugins/shell/select_fruit.sh: No such file or directory
[2023-10-12, 14:12:25 KST] {subprocess.py:97} INFO - Command exited with return code 127
[2023-10-12, 14:12:25 KST] {taskinstance.py:1935} ERROR - Task failed with exception
Traceback (most recent call last):
File "/home/airflow/.local/lib/python3.8/site-packages/airflow/operators/bash.py", line 210, in execute
raise AirflowException(
airflow.exceptions.AirflowException: Bash command failed. The command returned a non-zero exit code 127.
저는 wsl에 디렉토리는 아래 경로처럼 설정했습니다.(select_fruit.sh파일에 실행 권한도 주었습니다.)
/airflow_log/plugins/shell/select_fruit.sh
이후 docker-compose.yaml에 volumes 항목을 아래와 같이 설정을 했습니다.
${AIRFLOW_PROJ_DIR:-.}/airflow_log/plugins:/opt/airflow/plugins
Vscdoe에서 경로는 아래와 같이 설정을 했습니다.
t1_orange = BashOperator(
task_id="t1_orange",
bash_command="/opt/airflow_log/plugins/shell/select_fruit.sh ORANGE",
)
t2_banana = BashOperator(
task_id="t2_banana",
bash_command="/opt/airflow_log/plugins/shell/select_fruit.sh BANANA",
)경로 문제인지, 아니면 다른 문제인지.. 도움 요청해봅니다.
저에게 너무 필요한 강의라서 잘 듣고 있습니다! 앞으로도 좋은 강의 부탁드리겠습니다!
답변 1
0
안녕하세요 pruione1님
task 실패한 이유는 docker-compose.yaml 파일의 volumes 항목에서 연결한 디렉토리와 dag이 바라보는 디렉토리가 다르기 때문입니다.
docker-compose.yaml 파일에는 아래와 같이 작성돼있죠?
${AIRFLOW_PROJ_DIR:-.}/airflow_log/plugins:/opt/airflow/plugins따라서 WSL에서 작성한
$HOME/airlfow_log/plugins/shell/select_fruit.sh 디렉토리는
컨테이너에서 보면
/opt/airflow/plugins/shell/select_fruit.sh 에 위치하게 됩니다.
따라서 워커 컨테이너가 쉘 파일을 바라보도록 하기 위해 아래와 같이 수정해야 합니다.
bash_command="/opt/airflow_log/plugins/shell/select_fruit.sh ORANGE"
↓
bash_command="/opt/airflow/plugins/shell/select_fruit.sh ORANGE"
그럼 dag 내용은 이렇게 수정해야겠죠?
t1_orange = BashOperator(
task_id="t1_orange",
bash_command="/opt/airflow/plugins/shell/select_fruit.sh ORANGE",
)
t2_banana = BashOperator(
task_id="t2_banana",
bash_command="/opt/airflow/plugins/shell/select_fruit.sh BANANA",
)한번 해보시고 혹시 안되시면 또 남겨주세요 ^^
pykrx 회원제 전환으로 인한 실습 불가
0
102
2
수료증 발급
0
78
3
에러 발생 관련 질문드립니다.
0
77
2
vscode 작업화면에 오류가 발생하지 않습니다.
0
68
2
plugins 폴더 생성
0
73
2
WSL에서 git push 가 안되요 ㅠ
0
107
2
chatGPT&Airflow로 블로그 자동 포스팅하기 는 Deprecated 가 필요합니다.
0
65
2
github에 회원가입이 안되는데 원인이 뭔지 모르겠어요 ㅠ
0
705
2
설치중인데 venv를 꼭 써야할까요?
0
119
2
설치 버전 관련 질문입니다.
0
66
1
우분투 버전 다운받아야하는데 어떤걸로 설치해야할까요?
0
60
1
DAG 만들기 중 airflow 패키지 로드 에러
0
104
2
3.0에서도 수업노트가 성립하는지 확인 부탁드립니다!
0
94
3
task_id 사용법이 뭔가 바뀐 것 같습니다.
0
75
3
email operator 오류 관련
0
63
2
plugins 폴더 관련
0
91
2
bash operator 관련 문의입니다
0
77
3
스케쥴러 - DAG 파싱 부하 줄이는 과정 질문
0
78
2
Dags refresh 주기 관련 질문
0
123
2
wsl 관련 질문입니다.!
0
72
2
macOS에서 docker 설치
0
92
2
템플릿 변수에 대한 오류
0
58
2
custom_image 디렉토리 문의드립니다.
0
51
2
ETL 인터뷰 관련 문의
0
100
2





