Как правильно настроить планировщик воздушного потока - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь планировать задачи в потоке воздуха, но, видимо, это не так очевидно.

Задача, которую я хочу выполнить, довольно проста, вот конфигурация DAG:

from datetime import datetime
from airflow import DAG
from airflow.operators.dummy_operator import DummyOperator
from airflow.operators.python_operator import PythonOperator

def print_hello():
    return 'Hello world!'

dag = DAG('hello_world', description='Simple tutorial DAG',
          schedule_interval='30 15 * * *',
          start_date=datetime(2018, 10, 3), catchup=False)

dummy_operator = DummyOperator(task_id='dummy_task', retries=3, 
dag=dag)

hello_operator = PythonOperator(task_id='hello_task', 
python_callable=print_hello, dag=dag)

dummy_operator >> hello_operator

Этозначит я хочу запускать его каждый день в 15:30.Например, если я включу эту задачу сегодня, она не сработает в 15:30, а сработает завтра в это время.Это связано с идеей левой границы интервала выполнения (довольно странная особенность Airflow).

Так вот вопрос:

Как запустить задачу именно сегодня в 15: 30, а не завтра в конце интервала выполнения?

Будут признательны за любые предложения или разъяснения.

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Мне кажется, я понял идею.

Согласно [1] , atomic execution series создаются Airflow.У каждой серии выполнения есть Дата выполнения, которая обозначает начало интервала выполнения.

Так что в моем случае Дата выполнения (10-04T15: 30: 00 + 00: 00) означает, что интервал начался 4 октября и закончился 5 октября.в октябре ( сейчас ), выполняя сегодняшнее задание.

0 голосов
/ 05 октября 2018

Сегодня я создал точно такой же сценарий DAG (2018-10-05T17: 54: 00 + 0).Airflow (v1.10) создал прогон DAG для 2018-10-04T15: 30: 00 + 0 (который должен быть выполнен через некоторое время после 2018-10-05T15: 30: 00 + 0 [ 0 ]) и запустил его немедленно (потому что это было уже после 2018-10-05T15: 30: 00 + 0).Он не создал прогон DAG для 2018-10-03T15: 30: 00 + 0 из-за catchup=False, который указывает планировщику на создание прогона DAG только для самого последнего экземпляра серии интервалов DAG [ 1].

Итак, прогон DAG на сегодня (2018-10-05) - это прогон DAG, запланированный на 2018-10-04T15: 30: 00 + 0, поскольку его интервал планирования заканчивается сегодня.

Причиной, по которой вы не видите запуска DAG на сегодняшний день (т. Е. Тот, что для 2018-10-04T15: 30: 00 + 0) в веб-интерфейсе Airflow в вашем случае, может быть то, что вы сначала задалиstart_date до сегодняшнего дня запланировал DAG, а после этого попытался изменить start_date на более ранний день.Планировщик фактически создал прогон DAG для более ранней даты, но веб-интерфейс просто не отображал его.Самый простой способ исправить это - изменить dag_id (например, на hello_world_2 и т. Д.) При изменении start_date или schedule_interval [ 2 ] и перезапустить планировщик.

...