[英]Airflow ExternalTaskSensor manually triggered
我創建了兩個要手動觸發的 dags schedule_interval=None
。
首先,我觸發了“External_test_A”,它應該一直掛起,直到“External_test_B”不會被觸發。 過了一會兒(2 分鍾后),我觸發了“External_test_B”DAG,它只運行一個任務first_task
。
當任務: first_task
成功時,從“External_test_A”中探查Poking for External_test_B.first_task
應該完成,返回成功並從“External_test_A”運行second_task
任務。
我陷入了即使first_task
成功,“External_test_A”中的Poking for...
仍在繼續的情況。
外部測試A:
default_args = {
'owner': 'airflow',
'start_date': pendulum.yesterday().astimezone('US/Eastern')
}
dag = DAG(
dag_id='External_test_A',
default_args=default_args,
schedule_interval=None
)
def do_second_task():
print('Second task is done')
sensor = ExternalTaskSensor(
task_id='wait_for_the_first_task_to_be_completed',
external_dag_id='External_test_B',
external_task_id='first_task',
execution_delta=timedelta(minutes=3),
dag=dag)
t2 = PythonOperator(
task_id='second_task',
python_callable=do_second_task,
dag=dag)
sensor >> t2
if __name__ == "__main__":
dag.cli()
外部測試B:
default_args = {
'owner': 'airflow',
'start_date': pendulum.yesterday().astimezone('US/Eastern')
}
dag = DAG(
dag_id='External_test_B',
default_args=default_args,
schedule_interval=None
)
t1 = DummyOperator(task_id='first_task', dag=dag)
t1
if __name__ == "__main__":
dag.cli()
你們中的一些人能告訴我我做錯了什么嗎? 如何僅使用手動觸發來解決來自兩個不同 DAG 的兩個任務之間的通信問題?
經過大量研究,除非您編寫自己的 class 來完成這項工作,否則無法使用手動觸發來執行此操作。 兩個 dag 都必須有一個具有相同開始日期的計划間隔,並且您需要在外部傳感器定義中提及 execution_delta。
由於您的兩個 dag 都是手動觸發的,因此無法解決您的問題。 我建議您嘗試在一個 DAG 中執行此操作...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.