预定的WebJob

时间:2015-12-01 21:23:12

标签: azure azure-webjobs azure-webjobssdk

我正在创建一个新的Azure WebJob项目 - 它似乎是一个可以作为Web作业运行的控制台应用程序的精美版本。

我希望此作业基于计划运行,但在Main()方法中 - 请参阅下文 - Microsoft为您提供host.RunAndBlock()作业以便连续运行。

如果我希望工作定期运行,我是否需要更改?

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

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

3 个答案:

答案 0 :(得分:28)

使用Azure WebJobs SDK时,您可以使用TimerTrigger来声明按计划运行的作业功能。例如,这是一个在启动时立即运行的功能,然后每两个小时运行一次:

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

您可以通过安装Microsoft.Azure.WebJobs.Extensions nuget包获得TimerTrigger和其他扩展程序。有关TimerTrigger以及该程序包中其他扩展程序以及如何使用它们的更多信息,请参阅azure-webjobs-sdk-extensions repo。使用TimerTrigger时,请务必在启动代码中添加对config.UseTimers()的调用以注册扩展程序。

使用Azure WebJobs SDK时,将代码部署到连续 WebJob,并启用 AlwaysOn 。然后,您可以在该WebJob中添加所需的许多预定功能。

答案 1 :(得分:4)

按计划触发WebJob的一种简单方法是将其编码为常规控制台应用程序,只需将带有基于cron的调度配置的“settings.job”添加到项目中。 例如,以下定义将每5分钟触发一次:

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

无需使用JobHost,只需确保将WebApp配置为“始终开启”即可。 然后,您应该将该作业部署为触发的WebJob。

答案 2 :(得分:1)

我知道有两种方法可以安排网络作业,而不是让它连续运行:

1.使用CRON表达式创建计划的WebJob

2.使用Azure Scheduler创建计划的WebJob

您可以在此处找到两种方式的文档:

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

我认为您需要RunAndBlock以便预定或续作,但如果按需提供工作,则可以将其删除