Azure setting.job中提供了离子计划。一旦不运行,这些作业就不会出现在内存中
Continuous one始终运行,因此进程始终存在于内存中。您可以使用Webjobs SKDAzure setting.job中提供了离子计划。一旦不运行,这些作业就不会出现在内存中,azure,azure-webjobs,Azure,Azure Webjobs,Continuous one始终运行,因此进程始终存在于内存中。您可以使用Webjobs SKDTimeTrigger属性对其进行调度 您还将在仪表板中注意到这两种Webjob类型之间的差异。 对于触发的Webjobs,您将看到顶级jobs运行,然后调用函数,最后调用详细信息。 对于连续的WebJob,将调用这些函数,并最终调用详细信息。缺少作业运行,因为这只是一个长时间运行的作业 检查Kudu w3wp进程下的App Service/Process explorer以查看正在运行的Webjob
TimeTrigger
属性对其进行调度
您还将在仪表板中注意到这两种Webjob类型之间的差异。
对于触发的Webjobs,您将看到顶级jobs运行,然后调用函数,最后调用详细信息。
对于连续的WebJob,将调用这些函数,并最终调用详细信息。缺少作业运行,因为这只是一个长时间运行的作业
检查Kudu w3wp进程下的App Service/Process explorer以查看正在运行的Webjobs进程
请注意,在提供配置的Main
方法中,连续和触发的WebJob必须以不同的方式启动。当通过VisualStudio添加特定类型的Webjob时,所有配置都会出现
这是基于WebJobs 2.x的
我的建议是
- 对于定期(例如,每隔几小时、几天一次)作业,使用触发 作业不运行时不会消耗资源
- 对于更频繁的作业,请使用带有时间触发器的连续作业 属性,它将一直消耗资源,但不需要 额外的启动时间
public void DoSomethingUseful([TimerTrigger("0 */1 * * * *", RunOnStartup = false)] TimerInfo timerInfo, TextWriter log)
{
// Act on the DI-ed class:
string thing = _usefulRepository.GetFoo();
Console.WriteLine($"{DateTime.Now} - {thing}");
}
setting.job: { "schedule": "0 */1 * * * *" }
class Program
{
static void Main(string[] args)
{
var builder = new HostBuilder()
.ConfigureWebJobs(config =>
{
config.AddTimers();
config.AddAzureStorageCoreServices();
})
.ConfigureLogging((context, b) =>
{
b.AddConsole();
}
)
.Build();
builder.Run();
}
}
public class SayHelloWebJob
{
public void ProcessCollateFiles([TimerTrigger("0 */1 * * * *", RunOnStartup = false)]TimerInfo timerInfo,TextWriter writer)
{
writer.WriteLine("hi, it is a testing running");
Console.WriteLine("test");
}
}
{
"AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=xxx;EndpointSuffix=core.windows.net"
}