Google cloud cron.yaml форматирование расписания для настраиваемых интервалов повторения - PullRequest
0 голосов
/ 06 ноября 2019

Я изо всех сил стараюсь правильно отформатировать расписание cron для gcp, и документы на самом деле мне не помогают.

Cron # 1: запускать каждые 50 минут с 11:00 до 21:00 только вмесяцы с марта по октябрь включительно

  schedule: every 50 minutes from 11:00 to 21:00 of mar,apr,may,jun,jul,aug,sep,oct

Cron # 2: запускать каждый день в 22:00 только в месяцы с марта по октябрь включительно

  schedule: every day 22:00 of mar,apr,may,jun,jul,aug,sep,oct

Ни одна из этих работ,но они были одной из моих попыток. Что я тут не так делаю?

1 Ответ

2 голосов
/ 06 ноября 2019

Ссылаясь на Форматирование расписания Документы ниже.

Нет поддерживаемого синтаксиса для вашего первого cron:

  • с указанием минут в [INTERVAL_VALUE]поддерживается только форматами END-TIME INTERVAL и START-TIME INTERVAL , но ни один из них не позволяет указывать месяцы в [INTERVAL_SCOPE].
  • единственным форматом, поддерживающим спецификацию месяца в [INTERVAL_SCOPE], является ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРВАЛ , но он поддерживает только спецификации дня в [INTERVAL_VALUE].

Но вы можете достичьэквивалентную функциональность, используя более точную спецификацию времени в cron.yaml и проверяя оставшиеся условия внутри самого задания cron, ничего не делая, если условие не выполняется. Таким образом, ваш 1-й крон будет достигнут с помощью:

  • этой cron.yaml записи:

    schedule: every 50 minutes from 11:00 to 21:00
    
  • дополнительной проверки текущего месяца внутри задания хронСам, ничего не делая (просто возвращаясь), если месяц январь, февраль, ноябрь или декабрь

Ваш 2-й крон можно использовать с помощью ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРВАЛА , вам просто нужно поместитьчас в конце [INTERVAL_SCOPE]. Из документа:

[INTERVAL_SCOPE]: указывает предложение, соответствующее указанному [INTERVAL_VALUE]. Настраиваемые интервалы могут включать в себя предложение of [MONTH], в котором указывается один месяц в году или разделенный запятыми список из нескольких месяцев. Вы также должны указать конкретное время, когда вы хотите, чтобы задание выполнялось, например: of [MONTH] [HH:MM].

Таким образом, ваша запись будет:

schedule: every day of mar,apr,may,jun,jul,aug,sep,oct 22:00
...