К сожалению, даже после прочтения множества вопросов здесь и на странице часто задаваемых вопросов на веб-сайте Airflow я все еще не понимаю, как Airflow планирует задачи. У меня есть очень простой пример задачи:
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime, timedelta
default_args = {
"depends_on_past": False,
"start_date": datetime(2020, 5, 29),
"email_on_failure": False,
"email_on_retry": False,
"retries": 1,
"retry_delay": timedelta(minutes=5),
}
dag = DAG(
"example_dag_one",
schedule_interval="30 8 * * *",
catchup=False,
default_args=default_args,
)
with dag:
t1 = BashOperator(task_id="print_hello", bash_command="echo hello", dag=dag)
t1
Я наивно полагаю, что эта задача будет запущена 29 мая в 08:30. Но по прошествии времени Airflow не запланировал эту задачу. Если я изменю выражение cron на что-то вроде: '* 8 * * *', он будет планировать задачу каждую минуту.
Однако, когда я использую тот же самый DAG с датой начала вчера (так что 28 мая case) задача будет запланирована на 08:30, но дата ее выполнения - 28-е (хотя она была запущена 29-го мая), а дата начала в веб-интерфейсе - 29-е мая. Это ОЧЕНЬ сбивает с толку.
То, что я хочу от воздушного потока, в конечном итоге просто: «Вот код python, запустите его в этот день». Итак, как я мог этого добиться. Снова предположим, что я хочу запланировать задачу на 08:30 каждый день, начиная с завтрашнего дня.