我正在尝试为一个持续的Azure web作业实现优雅的关闭,提供所需的作业设置:
{
"stopping_wait_time": 3600,
"is_singleton": true
}我已登记回电:
static void Main(string[] args)
{
var cancellationToken = new WebJobsShutdownWatcher().Token;
cancellationToken.Register(() =>
{
Console.WriteLine("Shutdown Started...");
Thread.Sleep(5000);
Console.WriteLine("Waited 5 seconds!" + DateTime.Now.ToString());
Thread.Sleep(5000);
Console.WriteLine("Waited 10 seconds!" + DateTime.Now.ToString());
Thread.Sleep(5000);
Console.WriteLine("Waited 15 seconds!" + DateTime.Now.ToString());
Thread.Sleep(5000);
Console.WriteLine("Waited 20 seconds!" + DateTime.Now.ToString());
Thread.Sleep(5000);
Console.WriteLine("Waited 25 seconds!" + DateTime.Now.ToString());
Thread.Sleep(5000);
Console.WriteLine("Waited 30 seconds!" + DateTime.Now.ToString());
});
JobHost host = new JobHost();
MethodInfo methodInfo = typeof(Functions).GetMethod("GracefulShutdown");
host.CallAsync(methodInfo); //a long running method
host.RunAndBlock();
}但是,在停止web作业时,我永远无法执行回调的最后一行:
Console.WriteLine("Waited 30 seconds!" + DateTime.Now.ToString()有什么想法吗?
发布于 2016-04-13 04:44:32
对于触发的WebJobs,没有关闭通知,但是有一个优美的时间段(默认情况下是30秒),其中WebJob不会立即强制关闭,优美的句点是可配置的。 任何WebJob都可以更新优美的句点,方法是创建一个名为settings.job的文件,其内容如下:{ "stopping_wait_time":60 }
我可以看到你的优美的句号仍然是30秒,这和默认的一样。请检查你是否把你的settings.job放在正确的地方。你把它放在你的网络作业可执行文件所在的目录中(我想你是通过门户上传了一个zip文件吧?)如果是这样,只需将设置文件放在您正在使用的.exe或.cmd旁边的zip中)。
有关更多详细信息,请参阅dV。
https://stackoverflow.com/questions/36571553
复制相似问题