Триггер Azure Timer: выражение Cron для каждого часа в час - PullRequest
0 голосов
/ 22 ноября 2018

Что такое выражение cron для каждого часа в часе?Я пробовал это '0 0 *?* * 'но он выдал ошибку У меня есть триггер функции Azure

Это выражение, приведенное ниже, выполняется каждую минуту по минуте.

public static void Run([TimerTrigger("0 * * * * *")]TimerInfo myTimer, TraceWriter log)

Вот ошибка, которую я получил, когда пытался "0 0 *? * * * "И" 0 0 *? * * "

[22.11.2008, 00:45:29] Произошла ошибка ScriptHost [22.11.200800:45:29] Microsoft.Azure.WebJobs.Host: Ошибка индексации метода «Валюты. Запуск».Microsoft.Azure.WebJobs.Extensions: выражение расписания '0 0 *?* * * 'не был распознан как допустимое выражение cron или строка временного интервала.[22.11.2008, 12:45:29] Метод индексации ошибок «Currencies.Run» [22.11.2008, 12:45:29] Microsoft.Azure.WebJobs.Host: Метод индексации ошибок «Currencies.Run»,Microsoft.Azure.WebJobs.Extensions: выражение расписания '0 0 *?* * * 'не был распознан как допустимое выражение cron или строка временного интервала.

1 Ответ

0 голосов
/ 22 ноября 2018

Редактировать : попробуйте использовать "0 0 * * * *", документ подчеркивает использование шести полей.

Функции Azure используют библиотеку NCronTab для интерпретации CRONвыражения.Выражение CRON включает в себя шесть полей:

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


Azure предположительно использует библиотеку NCrontab в соответствии с документом, но тестирование показывает обратное!, поэтому используйте "0 * * * *" для каждого часа в часе.

Вот скрипт LINQPad для проверки:

var s = CrontabSchedule.Parse("0 * * * *");
var start = new DateTime(2000, 1, 1);
var end = start.AddYears(1);
var occurrences = s.GetNextOccurrences(start, end);
occurrences.Dump();

[Для этого требуетсяПакет пустых файлов NCrontab извлечен]

Ссылка: https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-timer

"Функции Azure используют библиотеку NCronTab для интерпретации выражений CRON"

...