Azure webjob始终“正在运行”

时间:2017-10-17 05:49:25

标签: azure-webjobs

我刚刚创建了一个天蓝色的Web作业。我安排它每1分钟运行一次:

0 */1 * * * *

这是代码

 var host = new JobHost();
 Console.WriteLine("Starting program...");
 var unityContainer = new UnityContainer();
 unityContainer.RegisterType<ProgramStarter, ProgramStarter>();
 unityContainer.RegisterType<IOutgoingEmailRepository, OutgoingEmailRepository>();
 unityContainer.RegisterType<IOutgoingEmailService, OutgoingEmailService>();
 unityContainer.RegisterType<IDapperHelper, DapperHelper>();

 //var game = unityContainer.Resolve<IOutgoingEmailRepository>();
 var program = unityContainer.Resolve<ProgramStarter>();
 program.Run().Wait();
 Console.WriteLine("All done....");

 host.RunAndBlock();

问题是状态永远不会变为“成功”。我做错了吗?以下是我使用的应用程序设置,我应该更改吗?我也注意到它第一次运行,我相信它是因为它永远不会结束

enter image description here

1 个答案:

答案 0 :(得分:3)

您可以在KUDU上查看您的webkjob日志。

如果您在RunAndBlock方案中使用上述作业,那么您的工作必须是连续的。这意味着,该过程将一直运行。

显然,您在这里使用的是Trigger webjob,而不是Continuous。此处不能使用RunAndBlock方法。

  

WEBJOBS_IDLE_TIMEOUT - 我们将中止的时间(以秒为单位)   如果它处于空闲状态,没有cpu时间或者没有cpu时间,则运行触发的作业进程   输出(仅适用于已触发的作业)。

此外,我注意到您将WEBJOBS_IDLE_TIMEOUT设置为100000。似乎该值太大,以至于它使您的webjob在闲置时不会长时间停止。

您还可以在settings.job文件中指定作业的宽限期(以秒为单位),其中设置的名称为stopping_wait_time,如下所示:

{ "stopping_wait_time": 60 }

更多详情,请参阅此doc

希望它对你有所帮助。