Время ожидания запланированных веб-заданий Azure

#azure #timer #azure-webjobs #azure-webjobs-triggered

Вопрос:

Я пытаюсь запустить веб-задание Azure ежечасно, но либо документация очень запутана, либо я что-то упускаю. Я использую a TimerTrigger со следующей подписью:

 public void RunHourly([TimerTrigger("0 * * * *")] TimerInfo myTimer)
 

и развернул его в Azure. Когда я запускаю веб-задание в Azure, в выводе я вижу:

 [06/24/2021 11:35:32 > 886219: INFO] info: Host.Triggers.Timer[5]
[06/24/2021 11:35:32 > 886219: INFO]       The next 5 occurrences of the 'RunHourly' schedule (Cron: '0 * * * *') will be:
[06/24/2021 11:35:32 > 886219: INFO]       06/24/2021 12:00:00Z
[06/24/2021 11:35:32 > 886219: INFO]       06/24/2021 13:00:00Z
[06/24/2021 11:35:32 > 886219: INFO]       06/24/2021 14:00:00Z
[06/24/2021 11:35:32 > 886219: INFO]       06/24/2021 15:00:00Z
[06/24/2021 11:35:32 > 886219: INFO]       06/24/2021 16:00:00Z
 

так что все выглядит нормально. В области веб-заданий портала azure столбец расписание имеет значение n/a, так как я не указал расписание в настройках.задание, и когда я запускаю веб-задание вручную, через несколько минут я получаю следующую ошибку

 [06/24/2021 11:41:34 > 886219: ERR ] Command 'cmd /c ""run.exe""' was aborted due to no output nor CPU activity for 121 seconds. You can increase the SCM_COMMAND_IDLE_TIMEOUT app setting (or WEBJOBS_IDLE_TIMEOUT if this is a WebJob) if needed.
cmd /c ""run.exe""
[06/24/2021 11:41:35 > 886219: SYS INFO] Status changed to Failed
[06/24/2021 11:41:35 > 886219: SYS ERR ] System.AggregateException: One or more errors occurred. ---> Kudu.Core.Infrastructure.CommandLineException: Command 'cmd /c ""run.exe""' was aborted due to no output nor CPU activity for 121 seconds. You can increase the SCM_COMMAND_IDLE_TIMEOUT app setting (or WEBJOBS_IDLE_TIMEOUT if this is a WebJob) if needed.
 

Итак, мой вопрос в том, как я должен использовать таймер, чтобы метод запускался каждый час или каждый день? Нужно ли мне также иметь расписание (это противоречит цели TimerTrigger)?

Любая помощь будет признательна

Ответ №1:

Для вашего требования, чтобы метод выполнялся каждый час, вы можете использовать функцию timertrigger azure вместо webjob.

Вы можете обратиться к этому документу о том, как создать приложение-функцию, а затем создать триггер таймера в приложении-функции. Когда вы указываете выражение cron триггера таймера, пожалуйста, установите его с 0 0 * * * * помощью . Тогда он будет срабатывать каждый час.