触发的 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