Azure连续WebJob“;“优雅”;关机时间少于5秒

Azure连续WebJob“;“优雅”;关机时间少于5秒,azure,azure-webjobs,Azure,Azure Webjobs,我发现了这个关于WebJobs“优雅”关闭的博客- 它表示,默认情况下,连续WebJobs的正常关闭时间为5秒 我想在我的WebJob关闭时发送一封电子邮件,因此我尝试了博客中详细介绍的方法,但此电子邮件不发送(我有一封电子邮件,在WebJob启动时发送OK) 查看webjob的日志,我认为这可能是因为关闭需要1秒而不是5秒——如果我正确读取日志的话 在提供的屏幕截图中,似乎在18:07:58“WebJob正在停止”,然后在18:07:58“状态更改为已停止”,因此不是5秒 有人知道我如何确保

我发现了这个关于WebJobs“优雅”关闭的博客-

它表示,默认情况下,连续WebJobs的正常关闭时间为5秒

我想在我的WebJob关闭时发送一封电子邮件,因此我尝试了博客中详细介绍的方法,但此电子邮件不发送(我有一封电子邮件,在WebJob启动时发送OK)

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

在提供的屏幕截图中,似乎在18:07:58“WebJob正在停止”,然后在18:07:58“状态更改为已停止”,因此不是5秒

有人知道我如何确保关机时间为5秒吗

或者,即使可以将连续Web作业的关闭宽限期延长到5秒以上

提前谢谢

**更新**

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

来自:

您可以通过指定作业的宽限期(以秒为单位)来更改作业的宽限期 在设置.job文件中(应与 作业脚本)

这将使作业宽限期为60秒,而不是默认值


此外,请注意,如果正在运行webjob,则应将网站设置为“始终打开”。这可以在管理门户中进行配置。

默认情况下,WebJobs运行时将等待5秒,然后终止进程。 正如我从日志中看到的,进程实际上是自己退出的(可能是因为您实现了on-shutdown检测),因此没有理由等待,关闭进程继续进行

“stopping\u wait\u time”
是用于延长5秒默认值的正确设置

开源的好处在于,我可以向您展示以下代码:

不幸的是,我认为settings.job文件只适用于触发的Web作业,而不是连续的Web作业。我也试过了,以防万一。我的webjob是一个控制台应用程序,我以60秒的设置将文件添加到根目录,但这没有什么区别。此外,我认为“始终打开”选项仅适用于标准网站,而不适用于免费/共享网站。我使用免费网站,因为我真的不愿意为了一份网络工作而为共享网站支付巨额费用。理想情况下,我希望将默认的5秒应用于我的连续WebJob。您是否尝试过将文件添加到项目的“属性”文件夹中?我也尝试过,将settings.job文件移动到“属性”文件夹中,但似乎不会影响关机时间。查看作业日志,仍然可以看到“由于网站关闭,SYS INFO]WebJob正在停止”和“SYS INFO]状态更改为“已停止”之间的时间为1秒或更短。谢谢你的提示。非常感谢。@Healps实际上,它似乎也适用于我的连续性工作
{ "stopping_wait_time": 60 }