Я не уверен, но это мое лучшее предположение -
Вкратце, возможно, именно так построен воздушный поток, и обходной путь может изменить ваш start_date
на вчерашний.
TL; DR
Я согласен с тем, что при включении 10 даг на 10-24 звучат более естественно.
Однако, согласно вашим пробежкам, RUN 1 - 10-23. Это говорит мне о том, что инициализация первого запуска не правильна, и я изучил код планировщика.
И у меня есть сомнения в этой строке.
https://github.com/apache/airflow/blob/68b8ec5f415795e4fa4ff7df35a3e75c712a7bad/airflow/jobs/scheduler_job.py#L603
Это внутри функции, которая создает прогон Dag и устанавливает дату начала прогона.
# The logic is that we move start_date up until
# one period before, so that timezone.utcnow() is AFTER
# the period end, and the job can be created...
now = timezone.utcnow()
# This returns current time + schedule_interval. In your example, this will be tomorrow.
next_start = dag.following_schedule(now)
# This returns current time - schedule_interval. In your example, this will be yesterday.
last_start = dag.previous_schedule(now)
# tomorrow <= today should return False
if next_start <= now:
new_start = last_start
else:
# and this will return last_start - schedule_interval which means 2 days ago.
# wondering if this is intended to be dag.previous_schedule(next_start)???
new_start = dag.previous_schedule(last_start)