Правильно ли работает next_ds при переходе на летнее время в DAG с учетом часового пояса? - PullRequest
0 голосов
/ 30 марта 2020

Я использую DAG с учетом часового пояса (tz = Европа / Лондон) с расписанием 0 0 * * 1-5.

В пятницу, 2020-03-27, next_ds установлено на 2020-03-29. Однако, согласно графику, я ожидал, что он будет 2020-03-30.

Интервал содержит переход на летнее время - возможно ли, что next_ds не учитывает это должным образом? Или есть другое объяснение этого поведения?

1 Ответ

1 голос
/ 03 апреля 2020

Оказывается, я должен был прочитать руководство - на https://airflow.apache.org/docs/stable/timezone.html там написано

Воздушный поток возвращает даты и время в формате, указанном в часовом поясе, но не переводит их в местное время поэтому они остаются в UT C. Это обрабатывается группой обеспечения доступности баз данных.

Сейчас я решаю эту проблему, используя фильтры jinja, определяя

def local_ds(execution_date):
    return execution_date.in_timezone(local_tz).strftime('%Y-%m-%d')

, а затем используя {{ execution_date | local_ds }} внутри шаблона.

Я предполагаю, что это особенно беспокоит людей, которые работают с Europe/London часовыми поясами, поскольку полночь по местному времени - это полночь по UT C в зимнее время, но летом становится 23:00 по сравнению с предыдущим днем ​​в UT C, поэтому смена даты.

...