Я хочу, чтобы задача завершилась ошибкой после 12 часов ее запуска, я установил execution_timeout
на 12 часов:
Оператором является SQLSensor, так как он иногда терял соединение и выходил из строя, я установил retries
на 3.
Однако из-за повторных попыток задача запускается заново после каждого тайм-аута.
1: задача запущена в 10:00
2: тайм-аут в 22:00
3: затем задача снова началась в 22:01
Я не хочу этого, как я могу установить общий тайм-аут для всех повторных попыток?
log_sensor = SqlSensor(
task_id='log_sensor',
conn_id='mssql_etl',
sql=my_query,
retries=3,
execution_timeout=timedelta(hours=12),
dag=dag)
Я думаю, вы хотите использовать kwarg sla
, как описано в документации здесь https://airflow.apache.org/docs/1.10.2/code.html?highlight=task%20timeout
sla(datetime.timedelta) – time by which the job is expected to succeed. Note that this represents the timedelta after the period is closed. For example if you set an SLA of 1 hour, the scheduler would send an email soon after 1:00AM on the 2016-01-02 if the 2016-01-01 instance has not succeeded yet. The scheduler pays special attention for jobs with an SLA and sends alert emails for sla misses. SLA misses are also recorded in the database for future reference. All tasks that share the same SLA time get bundled in a single email, sent soon after that time. SLA notification are sent once and only once for each task instance.
Хороший момент, я неправильно понял, о чем вы спрашиваете. Думали ли вы о настройке dagrun_timeout
, как описано здесь? github.com/apache/airflow/blob/master/airflow/models/…
Спасибо, но это не соответствует моим требованиям, в первую очередь это для запуска dag, но мне нужно что-то для экземпляра задачи, также мой dag не запланирован, и это для запланированных запусков dag :( Это хорошо изучить это, я могу пользуюсь другими запланированными дагами :) спасибо.
На самом деле я так не думаю, я использую sla для писем с предупреждениями, как описано в документации. При использовании sla airflow отправляет письмо с предупреждением, и задача продолжает выполняться, это для уведомления afaik. Я хочу установить тайм-аут задачи по истечении определенного периода времени, задача должна быть завершена неудачно, когда истечет время ожидания. Когда я устанавливаю количество повторных попыток на 0, он делает то, что я хочу. Но есть риск потерять связь в любой момент. Из-за этого я должен установить количество повторных попыток больше 0. Когда я устанавливаю повторные попытки, после тайм-аута оно становится up_for_retry.