1 Вопрос: Воздушный поток: как пометить оператора ExternalTaskSensor как Успешный после тайм-аута

вопрос создан в Thu, May 2, 2019 12:00 AM

У меня есть dag A, который ожидает некоторых других операторов в других dag B и C, чтобы загрузить данные, а затем выполнить их вычисления.

Для некоторых операторов в dags B и C это занимает слишком много времени, я хотел бы продолжить без "зависания" операторов и использовать любые данные, которые я получил до сих пор.

Таким образом, у меня есть тайм-аут, и я бы хотел пометить мои ExternalTaskSensors как Успешные после определенного тайм-аута.
Как я могу это сделать?

# 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 ответ                              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.

Документы: https://airflow.apache.org/concepts.html#trigger -правил р>     

1
2019-05-02 15: 35: 41Z
источник размещен Вот