Azure 连续 WebJob "Graceful" 关机时间少于 5 秒

Azure Continuous WebJob "Graceful" Shutdown is less than 5 seconds

我找到了这个关于 WebJobs 的博客 "Graceful" 关机 - http://blog.amitapple.com/post/2014/05/webjobs-graceful-shutdown/#.VNZbLPmsXZ0

它表示连续 Web 作业的正常关机默认为 5 秒。

我想在我的 WebJob 关闭时发送一封电子邮件,所以尝试了博客中详述的方法,但是这封电子邮件没有发送(我有一封在 WebJob 启动时发送正常的电子邮件)。

查看 webjob 的日志,我认为这可能是因为关闭需要 1 秒而不是 5 秒 - 如果我正确阅读日志的话。

在提供的屏幕截图中,似乎在 18:07:58 "WebJob is stopping" 然后在 18:07:58 "Status changed to Stopped",所以不是 5 秒。

有谁知道如何确保关机时间为5秒?

或者即使可以将此关闭宽限期延长至超过 5 秒以用于连续 Web 作业?

提前致谢

** 更新 **

我的问题是我忘记了 FileWatcher 事件处理程序与主线程在不同的线程上。因此,在事件处理程序逻辑完成之前,主线程正在完成,作业停止。 接受了 Amit Apple 的评论,因为这为我指明了正确的方向。 感谢你们两位的投入。

发件人:https://github.com/projectkudu/kudu/wiki/Web-jobs#continuous

You can change the grace period of a job by specifying it (in seconds) in the settings.job file (should be in the same root directory as the job's script).

{ "stopping_wait_time": 60 }

This will have the job grace period at 60 seconds instead of the default.

此外,请注意,如果您有网络工作 运行,则应将网站设置为 "always on"。这可以在管理门户中配置。

默认情况下,WebJobs 运行时将等待 5 秒后终止进程。 正如我从日志中看到的那样,该进程实际上是自行退出的(可能是因为您已经实施了关机检测)所以没有理由等待并且关机过程继续进行。

"stopping_wait_time" 是用于延长 5 秒默认值的正确设置。

开源的好处,我可以向您展示代码: https://github.com/projectkudu/kudu/blob/master/Kudu.Core/Jobs/ContinuousJobRunner.cs#L156-L190