Можно ли запланировать запуск DAG воздушного потока в определенное время в понедельник непосредственно перед 15-м числом каждого месяца? Я думаю, что эта строка cron может это сделать, но я не уверен, что правильно понял
0 10 8-14 * MON
Поэтому я думаю, что это должно происходить в 10:00 в понедельник только между 8 и 14 числами каждого месяца. Поскольку между 8-м и 14-м числом может быть только один понедельник, он должен проводиться только один раз в месяц, и это будет понедельник, предшествующий 15-му числу.
Это верно?
@ tobi6 спасибо, я знаю об этой странице. Но он просто записывает строку cron словами, он не проверяет, соответствуют ли эти слова моей предполагаемой логике. Я просто хочу подтвердить, что это будет выполняться в понедельник до 15 числа каждого месяца. Есть ли какой-нибудь крайний случай, который я пропустил, когда он случайно запускается, например, дважды в месяц?
Модуль croniter
(который Airflow использует для расчета даты / времени выполнения) поддерживает хэш-символ для поля дня недели, который позволит вам запланировать, что, как я считаю, будет работать, на второй понедельник каждого месяца.
Например, "30 7 * * 1#2"
сообщает, что запускается каждый месяц в 7:30 утра, во второй понедельник. Используя этот код для проверки:
from croniter import croniter
from datetime import datetime
cron = croniter("30 7 * * 1#2")
for i in range(10):
print(cron.get_next(datetime))
дает:
datetime.datetime(2018, 10, 8, 7, 30)
datetime.datetime(2018, 11, 12, 7, 30)
datetime.datetime(2018, 12, 10, 7, 30)
datetime.datetime(2019, 1, 14, 7, 30)
datetime.datetime(2019, 2, 11, 7, 30)
datetime.datetime(2019, 3, 11, 7, 30)
datetime.datetime(2019, 4, 8, 7, 30)
datetime.datetime(2019, 5, 13, 7, 30)
datetime.datetime(2019, 6, 10, 7, 30)
datetime.datetime(2019, 7, 8, 7, 30)
Как вы составили даты тестирования?
from croniter import croniter from datetime import datetime cron = croniter ("30 7 * * 1 # 2") print (cron.get_next (datetime)) # повторить
Спасибо, используя ваш код croniter
, я вижу, что он принимает мою строку cron между 8-м и 14-м ИЛИ в понедельник, в отличие от того, как я думал, как в И в понедельник. Так что я попробую ваш совет, используя #
.
Вы можете проверить расписание здесь: crontab.guru