Запланированное веб-задание

Я создаю новый проект Azure WebJob, который выглядит как законченная версия консольного приложения, которое может работать как веб-задание.

Я хочу, чтобы это задание выполнялось по расписанию, но в методе Main() - см. Ниже - Microsoft дает вам host.RunAndBlock() для непрерывного выполнения задания.

Нужно ли мне это менять, если я хочу, чтобы задание выполнялось через регулярные запланированные интервалы?

static void Main()
{
    var host = new JobHost();

    // The following code ensures that the WebJob will be running continuously
    host.RunAndBlock();
}

person Sam    schedule 01.12.2015    source источник


Ответы (3)


При использовании пакета SDK для веб-заданий Azure вы можете использовать TimerTrigger для объявления функций заданий, которые выполняются по расписанию. Например, вот функция, которая запускается сразу при запуске, а затем каждые два часа:

public static void StartupJob(
[TimerTrigger("0 0 */2 * * *", RunOnStartup = true)] TimerInfo timerInfo)
{
    Console.WriteLine("Timer job fired!");
}

Вы можете получить TimerTrigger и другие расширения, установив Microsoft.Azure.WebJobs.Extensions пакет nuget. Дополнительную информацию о TimerTrigger и других расширениях в этом пакете и о том, как их использовать, можно найти в репозиторий azure-webjobs-sdk-extensions. При использовании TimerTrigger не забудьте добавить вызов config.UseTimers() в свой код запуска, чтобы зарегистрировать расширение.

При использовании пакета SDK для веб-заданий Azure вы развертываете свой код в непрерывном веб-задании с включенным AlwaysOn. Затем вы можете добавить любое количество запланированных функций в это веб-задание.

person mathewc    schedule 02.12.2015

Простой способ инициировать веб-задание по расписанию - это закодировать его как обычное консольное приложение и просто добавить в проект файл settings.job с конфигурацией расписания на основе cron. Например, следующее определение будет запускать его каждые 5 минут:

{
  "schedule": "0 */5 * * * *"
}

Нет необходимости использовать JobHost, просто убедитесь, что ваше веб-приложение настроено как «Всегда включен». Затем вы должны развернуть задание как инициированное веб-задание.

person flsh    schedule 15.03.2016
comment
Я считаю, что это лучший подход, поскольку он полностью не зависит от вашего двоичного файла WebJob (т.е. вы можете вовремя запустить двоичный файл C ++, написанный 14 лет назад, с нулевой модификацией) - github.com/projectkudu/kudu/wiki/ - person evilSnobu; 01.10.2016

Я знаю два известных мне способа планирования веб-задания вместо того, чтобы заставлять его работать постоянно:

  1. Создайте запланированное веб-задание, используя выражение CRON
  2. Создание запланированного веб-задания с помощью Планировщика Azure

Вы можете найти документацию для обоих способов на странице azure.microsoft.com

Я думаю, вам понадобится RunAndBlock в случае запланированного или непрерывного режима, но вы можете удалить его, если у вас есть работа по запросу.

person Aram    schedule 01.12.2015
comment
[ссылка] (azure.microsoft.com/en -us / documentation / article / jobs /), похоже, не работает - person Nigel Belham; 03.03.2016
comment
@NigelBelham Обновил ссылку, спасибо за внимание - person Aram; 04.03.2016