我发现此博客关于WebJobs“Graceful”关闭 - http://blog.amitapple.com/post/2014/05/webjobs-graceful-shutdown/#.VNZbLPmsXZ0
它表示连续WebJobs的优雅关机默认为5秒。
我想在我的WebJob关闭时发送电子邮件,所以尝试了博客中详细说明的方法但是这封电子邮件没有发送(我有一封电子邮件,当WebJob启动时发送OK)。
查看webjob的日志我认为这可能是因为关机需要1秒而不是5秒 - 如果我正在正确阅读日志。
在提供的屏幕截图中,似乎在18:07:58“WebJob正在停止”然后在18:07:58“状态变为已停止”,所以不是5秒。
有谁知道如何确保关闭时间为5秒?
或者即使连续WebJobs可以将此关闭宽限期延长至5秒以上?
提前致谢
** 更新 **
我的问题是我忘记了FileWatcher事件处理程序与主线程位于不同的线程上。因此主要线程正在完成,并且在事件处理程序逻辑完成之前停止作业。 接受了Amit Apple的评论,因为这指出了我正确的方向。 感谢你们双方的意见。
答案 0 :(得分:3)
来自:https://github.com/projectkudu/kudu/wiki/Web-jobs#continuous
您可以通过指定作业来更改作业的宽限期(以秒为单位) 在 settings.job 文件中(应该在与。相同的根目录中) 工作的脚本)。
{ "stopping_wait_time": 60 }
这将使作业宽限期为60秒而不是默认值。
此外,请注意,如果您运行了webjob,则应将网站设置为“始终开启”。这可以在管理门户中配置。
答案 1 :(得分:3)
默认情况下,WebJobs运行时将等待5秒,然后才能终止进程。 正如我从日志中看到的那样,该过程实际上已经退出了它(可能是因为您已经实现了关闭检测),因此没有理由等待并且关闭过程继续进行。
"stopping_wait_time"
是用于延长5秒默认值的正确设置。
开源的好处,我可以告诉你这个代码: https://github.com/projectkudu/kudu/blob/master/Kudu.Core/Jobs/ContinuousJobRunner.cs#L156-L190