Azure Continuous WebJob"优雅"关机时间不到5秒

时间:2015-02-07 19:09:01

标签: azure azure-webjobs

我发现此博客关于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秒。

enter image description here

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

或者即使连续WebJobs可以将此关闭宽限期延长至5秒以上?

提前致谢

** 更新 **

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

2 个答案:

答案 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