Выражению NCron «0 0/5 19-7 * * Mon, Tue, Wed» не удалось выполнить синтаксический анализ функций Azure.

Мое выражение Cron: 0 0/5 19-7 * * Пн, Вт, Ср.

Это прошло на следующих веб-сайтах помощников по выражению cron https://ncrontab.swimburger.net/https://crontab.guru

Однако это не удается из-за следующей ошибки при печати следующих 50 расписаний:

[2021-06-07T17: 11: 38.690Z] Выполнена «Function1» (Ошибка,Id=1005492c-88bd-4cc6-ada5-355cdabdf156, Duration=488ms)[2021-06-07T17: 11: 38.692Z] System.Private.CoreLib: Исключение при выполнении функции: Function1. NCrontab.Signed: '0 0/5 19-7 * *Mon,Tue,Wed' является недопустимым выражением crontab. Он должен содержать 5 компонентов расписания в последовательности минут, часов, дней, месяцев и дней недели.

Ниже приведен код функции Azure, который распечатывает следующие 50 расписаний:

      using System;
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;
using NCrontab;

namespace FunctionApp1
{
    public static class Function1
    {
        private const string SCHEDULE_CRON_EXPRESSION = "0 0/5 19-7 * * Mon,Tue,Wed";
        private const int NUMBER_OF_FUTURE_SCHEDULES = 50;
        #if DEBUG
                const bool RUN_ON_STARTUP = true;
        #else
                const bool RUN_ON_STARTUP = false;
        #endif
        [FunctionName("Function1")]
        public static void Run([TimerTrigger(SCHEDULE_CRON_EXPRESSION, RunOnStartup = RUN_ON_STARTUP)]TimerInfo myTimer, ILogger log)
        {
            DateTime theScheduleDateTime = DateTime.Now;
            var schedule = CrontabSchedule.Parse(SCHEDULE_CRON_EXPRESSION);
            for(int i = 0; i < NUMBER_OF_FUTURE_SCHEDULES; i++)
            {
                theScheduleDateTime = schedule.GetNextOccurrence(theScheduleDateTime);
                log.LogInformation($"Next Schedule {i}: {theScheduleDateTime} ");
            }
        }
    }
}

Что мне здесь не хватает? И есть ли какой-нибудь официальный инструмент Azure, который помогает создавать и проверять выражения CRON?

2 ответа

Наверное, тебе нужно

      0 */5 19-7 * * MON-WED

Вы можете проверить шаблон выражения здесь

Проблема в том, что CRON Expression включает секунды, что дает 6 значений выражений.

{секунда} {минута} {час} {день} {месяц} {день-недели}

однако в соответствии с ошибкой

«Он должен содержать 5 компонентов расписания в последовательности минут, часов, дней, месяцев и дней недели»

Не работает закрытая константная строка SCHEDULE_CRON_EXPRESSION = "0 0/5 19-7 * * Пн, Вт, Ср";

Рабочая закрытая константная строка SCHEDULE_CRON_EXPRESSION = "0/5 19-7 * * Пн, Вт, Ср";

Я не уверен, как и почему в документации указано, что нужно включить {секунды} и что ncron sdk не смог выполнить синтаксический анализ, странно!https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-timer?tabs=csharp#ncrontab-expressions

Другие вопросы по тегам