Jost Do It.

그냥 IT해.

반응형

에어플로우 4

[Airflow] retry와 상관없이 특정 시간 이후 task fail시키기

개요 에어플로우에서는 task가 실패했을 때 재실행 하는 방법을 제공하고 있다. 재실행은 다음과 같이 설정할 수 있다. import pendulum from airflow import DAG from airflow.operators.bash import BashOperator from datetime import timedelta default_args = { 'owner': 'heenj', 'retries': 6, # 재실행 횟수 'retry_delay': timedelta(minutes=10) # 재실행 대기 시간 } with DAG( dag_id='retry_dag', default_args=default_args, start_date=datetime(2024, 3, 1, tzinfo=pendulu..

[Airflow] 에어플로우 `trigger_rule` 정의 및 파라미터 종류

너무좋다 챗지피티... 갓갓 [ChatGPT와의 대화내용] airflow의 trigger_rule에 대해 알려줘 Airflow의 trigger_rule은 DAG 내의 작업(Task)간 종속성(Dependency)을 정의하는데 사용됩니다. trigger_rule은 이전 Task의 실행 결과를 기반으로 다음 Task의 실행 여부를 결정하는 규칙(rule)입니다. trigger_rule은 Task 객체의 인수로 설정됩니다. 기본값은 all_success입니다. 다음은 trigger_rule의 종류와 각각의 의미입니다. all_success: 이전 Task가 모두 성공했을 때 실행합니다. 이전 Task 중 하나라도 실패하면 실행하지 않습니다. all_failed: 이전 Task가 모두 실패했을 때 실행합니다. ..

[Airflow] 파이썬에서 Error 로그가 airflow에서는 INFO로 뜨는 이유

[아래는 ChatGPT와 나눈 대화내용] 파이썬에서 에러 로그가 airflow에서는 INFO정보로 뜨는데 왜그래? Airflow는 기본적으로 로그 레벨이 INFO로 설정되어 있기 때문에, 파이썬에서 발생한 에러 로그도 INFO 레벨로 출력됩니다. 이는 Airflow가 파이썬 코드를 실행하는 방식 때문입니다. Airflow는 DAG(Directed Acyclic Graph)을 기반으로 작업을 스케줄링하며, 각 작업은 PythonOperator, BashOperator, DockerOperator 등의 Operator를 통해 실행됩니다. 이 때, Operator 내부에서 파이썬 코드를 실행하면서 발생하는 에러 로그도 Airflow에서 INFO 레벨의 로그로 처리됩니다. 하지만, 이러한 로그 레벨을 변경할 수..

[Airflow] 에어플로우 BashOperator 에러 발생 안할 때 해결 방법

문제 상황 에어플로우 BashOperator를 통해 작업을 dag에 걸어줬을 때, 에러가 발생했음에도 정상적으로 작동됐다고 체크된 경우가 있었다. 위 경우도 원래 4초짜리 task가 절대 아님에도 4초만에 정상적으로 작동이 완료됐다고 나와 에러 발생이 의심되는 상황이었다. 그래서 로그를 살펴보니 특정 라이브러리 로드를 안해줘서 에러가 발생함을 알 수 있었다. 그럼 왜 Airflow는 해당 dag에서 에러가 발생했음에도 정상적으로 작동했다고 결과를 출력한 것일까? 문제 발생 이유 파이썬같이 우리가 익숙한 프로그래밍 코드는 순차적으로 코드를 실행하다가 특정 line에서 에러가 발생하면 해당 line에서 에러를 발생시키고 실행을 멈추게 된다. 즉, 뒷 line은 실행하지 않는다. 하지만 Bash shell에서..

반응형