Функция Azure TimerTrigger запускается только один раз - PullRequest
1 голос
/ 02 июля 2019

Это моя функция. Json

{   "generatedBy": "Microsoft.NET.Sdk.Functions-1.0.28",   "configurationSource": "attributes",   "bindings": [
    {
      "type": "timerTrigger",
      "schedule": "*/5 * * * * *",
      "useMonitor": true,
      "runOnStartup": false,
      "name": "myTimer"
    }   ],   "disabled": false,   "scriptFile": "../bin/PullRequest.dll",   "entryPoint": "PullRequest.PullRequest.Run" }

Это моя фактическая функция:

[FunctionName("PullRequest")]
public static void Run([TimerTrigger("*/5 * * * * *")]TimerInfo myTimer, ILogger log)
{
     if (myTimer.IsPastDue)
     {
         log.LogInformation("Timer is running late!");
     }
     log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
}

Когда я пытался запустить эту функцию на портале Azure, она запускалась только один раз и останавливалась.

это журнал функции Azure: enter image description here

Я перезапустил его, и теперь он запускается только один раз.

Ответы [ 2 ]

1 голос
/ 02 июля 2019

Триггер времени будет автоматически выполняться согласно выражению CORN, т. Е. В вашем случае эта функция будет выполняться каждые пять секунд, а если вы запустите ее с портала Azure, она будет запущена только один раз. Если вы хотите проверить время последнего выполнения, вы можете перейти на вкладку «Монитор» и проверить время. Я выполнил это локально и работает как положено enter image description here

1 голос
/ 02 июля 2019

Как и DavidG сказал : журналы, которые вы нам показываете, показывают, что функция PullRequest выполнялась не менее 3 раза .

  • Когда строка журнала executing не видна, причина неясна
  • Один раз, потому что таймер сработал (@ 11: 30: 00)
  • Один раз, потому что он был программно вызван через API хоста (AKA вручную)

Ваше выражение CRON */5 * * * * * примерно переводится как «запускать это каждый раз, когда количество секунд делится на 5». Это не будет соответствовать журналам, которые вы предоставляете. Вы уверены что вы используете CRON-выражение?

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

{second} {minute} {hour} {day} {month} {day-of-week}

Взято из Триггер таймера для функций Azure - выражения CRON .

EDIT:
Функции, запускаемые по триггеру таймера, автоматически запускаются через указанные интервалы таймера. Чтобы на самом деле функции запускали , вам (конечно) нужно запустить что-то, что выполняет этот триггер. В противном случае: как они могут быть вызваны?

В Azure среда выполнения функций отвечает за запуск функции в нужное время. Локально, инструмент func.exe, который запускается автоматически при отладке приложения, сделает это за вас. Но если это не сработает, ничего не произойдет .

Функции Azure Core Tools позволяют разрабатывать и тестировать свои функции на локальном компьютере из командной строки или терминала. Ваши локальные функции могут подключаться к работающим службам Azure, и вы можете отлаживать свои функции на локальном компьютере, используя полную среду выполнения функций.

и

Чтобы запустить проект Functions, запустите узел Functions. Хост включает триггеры для всех функций в проекте.

Взято из Работа с основными функциями функций Azure .

Вкратце: «Хост включает триггеры. Он должен работать, чтобы иметь что-то , которое запускает любую функцию».

...