2015-12-01 2 views
6

Я создаю новый проект Azure WebJob, который выглядит как отполированная версия консольного приложения, которое может работать как веб-задание.Запланированный 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(); 
} 

ответ

25

При использовании Azure WebJobs SDK вы можете использовать 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 repo. При использовании TimerTrigger не забудьте добавить в код запуска config.UseTimers(), чтобы зарегистрировать расширение.

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

+0

отлично, искал этот атрибут для возрастов –

1

Есть 2 способа, которые я знаю для планирования веб-работы вместо того, чтобы запустить его продолжительный:

1.Create запланированной WebJob используя выражение CRON

2.Create запланированного WebJob с помощью Azure Планировщик

Вы можете найти документацию для обоих способов здесь:

https://azure.microsoft.com/en-us/documentation/articles/web-sites-create-web-jobs/

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

+0

[ссылка] (https://azure.microsoft.com/en-us/documentation/articles/web-sites-create-web- jobs /), кажется, сломан –

+0

@NigelBelham Обновилась ссылка, спасибо за heads up – Aram

2

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

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

Нет необходимости использовать JobHost, просто убедитесь, что ваш WebApp настроен как «Always On». Затем вы должны развернуть это задание как запущенный WebJob.

+0

Я второй как лучший подход, так как он полностью агностик для вашего двоичного файла WebJob (т. е. вы можете запустить двоичный код C++, написанный 14 лет назад с нулевой модификацией) - https://github.com/projectkudu/kudu/wiki/Web-Jobs#scheduling-a-triggered-webjob – evilSnobu

Смежные вопросы