Azure webjob 功能的单独时间表?
Separate schedules for Azure webjob functions?
是否可以为 Azure 网络作业中的各个非触发函数设置单独的计划?我问是因为我有六个单独的任务,我想 运行 在一天中的不同时间和不同的时间间隔完成,并且不想为每个任务创建一个单独的项目。
您可以编写一个带有无限循环的普通旧控制台应用程序,在每次迭代结束时使用 Thread.Sleep() 暂停。每次循环唤醒时,它都会检查内部保存的时间表,并调用当时应该 运行 的任何函数。计划可以存储在 app.config 中,因此您可以更改它而无需重新编译 WebJob,只需上传一个新的 app.config 并重新启动它。
或者如果您愿意,您可以省略无限循环并以固定的时间间隔安排 WebJob,比如每 30 分钟一次,并让它在每次 运行 时检查其内部计划。
我最终使用 Quartz.net 和一个连续的作业来安排 Web 作业内部的各种活动。这非常有效。
是的,您可以使用 TimerTriggerAttribute
这是一个示例代码:
public class Program
{
static void Main(string[] args)
{
JobHostConfiguration config = new JobHostConfiguration();
// Add Triggers for Timer Trigger.
config.UseFiles(filesConfig);
config.UseTimers();
JobHost host = new JobHost(config);
host.RunAndBlock();
}
// Function triggered by a timespan schedule every 15 sec.
public static void TimerJob([TimerTrigger("00:00:15")] TimerInfo timerInfo,
TextWriter log)
{
log.WriteLine("1st scheduled job fired!");
}
// Function triggered by a timespan schedule every minute.
public static void TimerJob([TimerTrigger("00:01:00")] TimerInfo timerInfo,
TextWriter log)
{
log.WriteLine("2nd scheduled job fired!");
}
}
您也可以使用 CRON 表达式来指定何时触发函数:
是否可以为 Azure 网络作业中的各个非触发函数设置单独的计划?我问是因为我有六个单独的任务,我想 运行 在一天中的不同时间和不同的时间间隔完成,并且不想为每个任务创建一个单独的项目。
您可以编写一个带有无限循环的普通旧控制台应用程序,在每次迭代结束时使用 Thread.Sleep() 暂停。每次循环唤醒时,它都会检查内部保存的时间表,并调用当时应该 运行 的任何函数。计划可以存储在 app.config 中,因此您可以更改它而无需重新编译 WebJob,只需上传一个新的 app.config 并重新启动它。
或者如果您愿意,您可以省略无限循环并以固定的时间间隔安排 WebJob,比如每 30 分钟一次,并让它在每次 运行 时检查其内部计划。
我最终使用 Quartz.net 和一个连续的作业来安排 Web 作业内部的各种活动。这非常有效。
是的,您可以使用 TimerTriggerAttribute
这是一个示例代码:
public class Program
{
static void Main(string[] args)
{
JobHostConfiguration config = new JobHostConfiguration();
// Add Triggers for Timer Trigger.
config.UseFiles(filesConfig);
config.UseTimers();
JobHost host = new JobHost(config);
host.RunAndBlock();
}
// Function triggered by a timespan schedule every 15 sec.
public static void TimerJob([TimerTrigger("00:00:15")] TimerInfo timerInfo,
TextWriter log)
{
log.WriteLine("1st scheduled job fired!");
}
// Function triggered by a timespan schedule every minute.
public static void TimerJob([TimerTrigger("00:01:00")] TimerInfo timerInfo,
TextWriter log)
{
log.WriteLine("2nd scheduled job fired!");
}
}
您也可以使用 CRON 表达式来指定何时触发函数: