我有一个A
字符,它正在等待其他B
和C
字符中的其他运算符下载数据,然后对其进行计算。
对于某些在B
和C
中处于运算符状态的运算符来说,它花费的时间太长,我想继续使用,而不用“挂起”运算符并使用我到目前为止收到的任何数据。
因此,我有一个超时时间,我想在给定的超时时间后将我的ExternalTaskSensor
标记为成功。
我该怎么办?
# dag A:
wait_for_task_1 = ExternalTaskSensor(
task_id='wait_B_task_1',
external_dag_id='B',
external_task_id='task_1',
dag=dag,
timeout=(4 * 3600) # After 4 hours, I want to continue A "as is"
)
答案 0 :(得分:1)
目前尚无法实现,但是您可以对直接依赖于trigger_rule='all_done'
的任务设置wait_for_task_1
。
示例:
wait_for_task_1 = ExternalTaskSensor(
task_id='wait_B_task_1',
external_dag_id='B',
external_task_id='task_1',
dag=dag,
timeout=(4 * 3600) # After 4 hours, I want to continue A "as is"
)
task_2 = DummyOperator(task_id='task_2', trigger_rule='all_done', dag=dag)
wait_for_task_1 >> task_2
这将允许下游任务运行,即使该任务已失败。
所有任务的默认trigger_rule
是all_success
。