Airflow를 이용할 때, 실패한 특정 task를 다시 실행하고 싶은 경우가 있다.
이전까지는.. 그냥 맨 처음부터 실행하는 방법만 있는 줄 알았다.. Task 가 적은 경우 괜찮지만 Task 도 많고 시간도 오래 걸리는 작업은...
하지만 특정 Task 가 실패 후 코드를 수정해서 업데이트 한 다음, 실패한 Task 만 다시 실행해서 올바르게 수행이 되었는지 확인하는 방법이 있다! 즉, Airflow는 DAG run 단위로 재수행 하는 방법, Task 단위로 재수행 하는 방법이 있는 것이다.
왜 이걸 이제야 찾아보고 정리하는 걸까..⭐️
Airflow UI 이용하는 방법
실패한 위 Task는 해당 DAG의 거의 마지막 Task 였다. 이 Task 가 계속 실패하고 테스트하면서 앞에 수많은 Task 들을 전체 DAG Run 하면서 테스트했었다..
💡 방법은 이렇다
해당 Task 눌러서 나오는 팝업창에서 Clear 버튼을 눌러주면 다시 실행시킬 수 있는 Queued 상태로 변환되고 다시 Running 된다.
저걸 Clear 누른다고 해서 이전 실패했던 로그들이 사라지진 않는다. 즉, 이전에 재시도를 이미 3번 했다면 그 3번에 대한 로그는 그대로 남아있고 4번째 실행에 대한 로그로 확인하면 된다.
맨 처음 눌렀을 때 Default로 설정되어 있는 DownStream, Recursive 상태에서 Clear 누르면 된다. 다른 옵션에 대해서는 추후 테스트를 더 진행 후 업데이트하도록 하겠다.
해당 DAG의 코드를 수정후, 정확히 실패한 Task에 대한 코드를 수정 후 실패한 Task를 위와 같이 Clear 한 후 기다리면 Task 가 다시 Queued 상태로 바뀌고 Running 상태로 바뀌게 된다!! 하지만 개발자라면 간지 나게 CLI로는 어떻게 Clear 하는지 알아야지!
CLI에서 Clear 하는 방법
CLI로 처리하면 UI에서는 불가능한 처리 조건을 실행할 수 있다고 한다.
📚 해당 공식 문서: https://airflow.apache.org/docs/apache-airflow/stable/cli-and-env-variables-ref.html#clear
airflow tasks clear [-h] [-R] [-d] [-e END_DATE] [-X] [-x] [-f] [-r]
[-s START_DATE] [-S SUBDIR] [-t TASK_REGEX] [-u] [-v] [-y]
dag_id
해당 공식 문서에 argument에 대한 자세한 설명이 나와 있다.
이 분 블로그에 자세하게 옵션에 대한 설명이 나와있었다!
👩💻 느낀 점
이번 기회에 느낀 건 개발자가 되려면 귀찮은 걸 싫어해야 하고, 귀찮은 걸 시간을 투자하여 계속 한 방법을 고집할 필요가 없다는 것..
모든 사람들이 비슷한 고민을 할 거고 그거에 대한 해답은 거의 존재하는 것 같다. 파이팅..
'Airflow' 카테고리의 다른 글
[Airflow] Custom UI for Airflow | LIM (0) | 2022.12.29 |
---|---|
[Operator] SimpleHttpOperator | LIM (0) | 2022.12.21 |
[Airflow] SFTPToGCSOperator 개념 및 사용방법 | LIM (0) | 2022.11.12 |
[Airflow] Branch를 이용해 상황에 맞는 task 실행(BranchPythonOperator) | LIM (0) | 2022.07.19 |
[Airflow] Airflow Connection with Google Secret Manager | LIM (0) | 2022.06.16 |
댓글