NCRONTAB для каждого первого вторника каждого месяца для функции Azure - PullRequest
0 голосов
/ 28 мая 2020

Как мне создать триггер таймера с Azure функциями (версия 3 и NET Core) , который должен выполняться каждый первый вторник каждого месяца в 8:00. Начиная с настоящего момента (05.08.2020) это должны быть следующие пять вхождений:

  1. 2020/06/02 Вт 08: 00: 00
  2. 2020/07/07 Вт 08:00: 00
  3. 2020/08/04 Вт 08:00: 00
  4. 2020/09/01 Вт 08:00: 00
  5. 2020/10/06 Вт 08: 00: 00

Используя www.cronmaker.com, у меня следующий NCRONTAB:

0 0 8 ? 1/1 TUE#1 *

Но тогда У меня следующее исключение:

Выражение расписания 0 0 8 ? 1/1 Tue#1 * не было распознано как допустимое выражение CRON или строка TimeSpan.

Затем я начал изменять CRON выражение для следующих изменений:

CORN              | Result
----------------- |-------------------------------------------
0 0 8 ? 1/1 Tue#1 | Error from above
0 0 8 * 1/1 Tue#1 | Error from above
0 0 8 1/1 Tue#1 * | Error from above
0 0 8 * 1/1 Tue 1 | Error from above
0 0 8 ? 1/1 Tue 1 | Error from above
0 0 8 * 1/1 Tue/1 | 2020/05/29 08:00:00 - 2020/05/30 08:00:00
0 0 8 * * Tue/2   | 2020/05/30 08:00:00 - 2020/06/02 08:00:00
0 0 8 * 1/1 Tue/2 | 2020/05/30 08:00:00 - 2020/06/02 08:00:00
0 0 8 ? 1/1 Tue/2 | Error from above

Таким образом, каждое выражение, которое я сделал, не будет работать должным образом. У меня вопрос: какое правильное выражение?

Ответы [ 2 ]

1 голос
/ 29 мая 2020

Первый понедельник месяца приходится на одну (и только одну) из дат с первого по 7-е включительно. Тогда выражение cron будет легко получить.

Предположим, это должно быть 0 0 8 1-7 * Tue, а ниже - мой тест, он показывает первые пять дат.

enter image description here

1 голос
/ 28 мая 2020

К сожалению, триггер таймера использует библиотеку NCrontab , в которой нет понятия «первый вторник». Я думаю, лучшее, что вы можете сделать, - это установить выражение на 0 0 8 * * 2, которое будет запускаться в 8 утра каждый вторник, и добавить немного кода в фактическую функцию, которая немедленно возвращается, если это не первый вторник месяца.

...