1. subdag
dag
schedule_interval 속성을 다르게했는데도 각각 움직이지 않는다.
왜일까?
예)
dag : @once
subdag : */1 * * * *
하지만 결과는 once.....
2. TriggerDagRunOperator
trigger_dag_id 속성을 통해 서로 다른 dag가 통신이 된다.
하지만 ....
target dag의 schedule_interval: None 이어야만 한다.
그러므로 controller dag의 schedule_interval을 따라간다.
그렇다면 두 개의 dag는 따로 실행이 안되는 것인가
왜 target은 None이어야만 하는가 .....
3. BranchPythonOperator
python_callable의 return값이 해당하는 task로 이동한다.
마치 if, else문 처럼
4. Variables
global처럼 사용할 수 있는 함수
하지만 dag on/off에도 계속 값을 가지고 있다.
그렇다면 dag off 일 때, 초기화 할 수 있는 방법은 없을까?
5. ExternalTaskSensor
task_sensor = ExternalTaskSensor(
task_id='link_upstream',
external_dag_id='call-procedure-and-bash',
external_task_id='print_the_context',
allowed_states=[State.SUCCESS],
execution_delta=timedelta(minutes=1),
mode = 'reschedule',
dag=dag
)
다른 dag의 실행을 살펴보는 sensor
이 때 execution_delta를 잘 설정해야 interval이 다른 dag가 꼬이지 않게
잘 실행될 수 있다.
예)
sensor dag 의 interval = 1분
external_dag의 interval = 2분
즉 delta = 1분이다.
* sensor의 사용을 추천하지 않습니다.
airflow create user (0) | 2020.01.10 |
---|---|
2019.11.29 (0) | 2020.01.10 |
airflow #2 (0) | 2020.01.10 |
airflow #1 (0) | 2020.01.10 |