触发的 Webjob 应该完成吗?
Should a triggered Webjob complete?
例如,我用 TimerTrigger
创建了一个非常简单的 WebJob;
static async Task Main()
{
var builder = new HostBuilder();
builder.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices();
b.AddTimers();
});
builder.ConfigureLogging((context, b) =>
{
b.AddConsole();
});
var host = builder.Build();
using (host)
{
await host.RunAsync();
}
}
}
public class Functions
{
public static void ProcessTimerMessage([TimerTrigger("*/30 * * * * *", RunOnStartup = true)] TimerInfo timerInfo, ILogger logger)
{
logger.LogInformation("I am here");
}
}
当我在 Azure 中 运行 它永远不会完成。我期待这在每个 运行 上完成,然后在下一个触发器上重新开始。相反,它永远不会停止 运行ning:
WebJobs 运行s 的 TimerTrigger 在启动时作为单例实例,并将 运行 连续,在内部跟踪它 运行s 的时间间隔(基于提供的 cron图案)。如果任何单个调用花费的时间比间隔长,那么它将继续处理它正在做的工作并跳过重叠调用,直到当前工作完成。
您可以在此处阅读详细信息:
https://github.com/Azure/azure-webjobs-sdk-extensions/wiki/TimerTrigger
例如,我用 TimerTrigger
创建了一个非常简单的 WebJob;
static async Task Main()
{
var builder = new HostBuilder();
builder.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices();
b.AddTimers();
});
builder.ConfigureLogging((context, b) =>
{
b.AddConsole();
});
var host = builder.Build();
using (host)
{
await host.RunAsync();
}
}
}
public class Functions
{
public static void ProcessTimerMessage([TimerTrigger("*/30 * * * * *", RunOnStartup = true)] TimerInfo timerInfo, ILogger logger)
{
logger.LogInformation("I am here");
}
}
当我在 Azure 中 运行 它永远不会完成。我期待这在每个 运行 上完成,然后在下一个触发器上重新开始。相反,它永远不会停止 运行ning:
WebJobs 运行s 的 TimerTrigger 在启动时作为单例实例,并将 运行 连续,在内部跟踪它 运行s 的时间间隔(基于提供的 cron图案)。如果任何单个调用花费的时间比间隔长,那么它将继续处理它正在做的工作并跳过重叠调用,直到当前工作完成。
您可以在此处阅读详细信息: https://github.com/Azure/azure-webjobs-sdk-extensions/wiki/TimerTrigger