Airflow 특정 Task 재실행 | LIM
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에 대한 자세한 설명이 나와 있다.
이 분 블로그에 자세하게 옵션에 대한 설명이 나와있었다!
Apache Airflow 재수행 방법 정리
Apache Airflow을 구축해서 운영하다보면 이런저런 이유들로 인해 DAG을 재수행해야하는 일이 발생한다. raw 데이터 오류, 집계 로직 오류 등의 이유로.. 재수행하는 방법에 대해서 정리해본다. 일단
sheerheart.tistory.com
👩💻 느낀 점
이번 기회에 느낀 건 개발자가 되려면 귀찮은 걸 싫어해야 하고, 귀찮은 걸 시간을 투자하여 계속 한 방법을 고집할 필요가 없다는 것..
모든 사람들이 비슷한 고민을 할 거고 그거에 대한 해답은 거의 존재하는 것 같다. 파이팅..