본문 바로가기
Airflow

Airflow 특정 Task 재실행 | LIM

by forestlim 2022. 12. 7.
728x90
반응형

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에 대한 자세한 설명이 나와 있다. 

이 분 블로그에 자세하게 옵션에 대한 설명이 나와있었다!

https://sheerheart.tistory.com/entry/Apache-Airflow-%EC%9E%AC%EC%88%98%ED%96%89-%EB%B0%A9%EB%B2%95-%EC%A0%95%EB%A6%AC

 

Apache Airflow 재수행 방법 정리

Apache Airflow을 구축해서 운영하다보면 이런저런 이유들로 인해 DAG을 재수행해야하는 일이 발생한다. raw 데이터 오류, 집계 로직 오류 등의 이유로.. 재수행하는 방법에 대해서 정리해본다. 일단

sheerheart.tistory.com


👩‍💻 느낀 점

이번 기회에 느낀 건 개발자가 되려면 귀찮은 걸 싫어해야 하고, 귀찮은 걸 시간을 투자하여 계속 한 방법을 고집할 필요가 없다는 것..

모든 사람들이 비슷한 고민을 할 거고 그거에 대한 해답은 거의 존재하는 것 같다. 파이팅..

728x90
반응형

댓글