完全执行触发的Web作业,然后在121秒后超时终止

时间:2019-06-24 00:28:46

标签: c# azure .net-core azure-web-sites azure-webjobs

我有一个Web作业,当将新项目添加到存储队列时,该作业已在Azure中成功触发。

当它被触发时,我检查了日志,并且所有编写的代码均已正确执行,但是Web作业仍处于“仍在执行”状态,并且在执行121秒后它将中止。

这是被触发的方法,随后是日志文件,您可以在其中看到“开始处理内容”被写入日志,而“处理内容已完成”被写入日志。这就告诉我一切都执行得很好,据我所知,我不需要做其他特别的事情来表示这已成功执行。

因此,我认为Web Jobs应该如何工作是将其视为成功执行。而是在仪表板上将其标记为“失败”,并完全停止Web作业(即使它被设计为在连续模式下工作)。此外,App Service设置为Always On。

错误中增加超时的建议没有任何意义。要做的就是代替完成后121秒超时,而是完成后5分钟或我设置的超时时间。

对于我来说,完全超时的是,该超时将在作业甚至指示其“成功”之后中止该作业。 (有关这些详细信息,请参阅我在下面用粗体显示的所有要点)。可能是个错误?还是我自己错过了其他设置?还是MS缺少的另一篇文档?

应用服务计划正在付费服务层(B1)上运行。

public static async Task ProcessQueueMessage([QueueTrigger("myTrigger")] CloudQueueMessage message, TextWriter log)
        {
                System.Console.Out.WriteLine($"Start Processing Content");
                await DoSomeWork();
                System.Console.Out.WriteLine($"Processing Content Has Completed");
   }
  •   

    [06/24/2019 00:08:11> 8a8d8d:INFO]触发器详细信息:MessageId:   086184dd-f9be-4e1d-b1e7-49707bd1a4e7,DequeueCount:1,插入时间:   2019/6/24下午12:07:48 +00:00    [06/24/2019 00:08:11> 8a8d8d:INFO]开始处理内容[06/24/2019 00:08:15> 8a8d8d:INFO]处理内容具有   已完成 [06/24/2019 00:08:15> 8a8d8d:INFO]信息:   Function.ProcessQueueMessage [0] [06/24/2019 00:08:15> 8a8d8d:INFO]
      执行了“ StorageQueueProcessor.ProcessQueueMessage”(成功,   id = f3fcd403-515a-4746-803e-fba14d2b0455)[** 06/24/2019 00:12:17>   8a8d8d:ERR] **由于没有命令,命令'cmd / c“” run.cmd“”'被中止   输出或CPU活动时间为121秒。您可以增加   SCM_COMMAND_IDLE_TIMEOUT应用设置(或WEBJOBS_IDLE_TIMEOUT)   是一个WebJob)。 cmd / c“” run.cmd“” [06/24/2019 00:12:17>   8a8d8d:SYS INFO]状态更改为失败[06/24/2019 00:12:17>   8a8d8d:SYS错误] System.AggregateException:一个或多个错误   发生。 ---> Kudu.Core.Infrastructure.CommandLineException:命令   'cmd / c“” run.cmd“”“由于没有输出或CPU活动而中止   121秒您可以增加SCM_COMMAND_IDLE_TIMEOUT应用设置   (如果需要,则为WEBJOBS_IDLE_TIMEOUT)。命令/ c   “”“ run.cmd”在   Kudu.Core.Infrastructure.IdleManager.WaitForExit(IProcess进程)在   C:\ Kudu   Files \ Private \ src \ master \ Kudu.Core \ Infrastructure \ IdleManager.cs:line   96时   Kudu.Core.Infrastructure.ProcessExtensions.d__13.MoveNext()在   C:\ Kudu   Files \ Private \ src \ master \ Kudu.Core \ Infrastructure \ ProcessExtensions.cs:line   254   ---从上一个引发异常的位置开始的堆栈跟踪-   System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()在   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)   Kudu.Core.Infrastructure.Executable.d__31.MoveNext()在   C:\ Kudu   Files \ Private \ src \ master \ Kudu.Core \ Infrastructure \ Executable.cs:line   255 ---内部异常堆栈跟踪的结尾---   System.Threading.Tasks.Task.ThrowIfExceptional(Boolean   includeTaskCanceledExceptions)   System.Threading.Tasks.Task 1.GetResultCore(Boolean waitCompletionNotification) at Kudu.Core.Infrastructure.Executable.ExecuteInternal(ITracer tracer, Func 2 onWriteOutput,函数2 onWriteError, Encoding encoding, String arguments, Object[] args) in C:\Kudu Files\Private\src\master\Kudu.Core\Infrastructure\Executable.cs:line 216 at Kudu.Core.Infrastructure.Executable.ExecuteReturnExitCode(ITracer tracer, Action 1 onWriteOutput,Action`1 onWriteError,字符串   C:\ Kudu中的参数,Object [] args)   Files \ Private \ src \ master \ Kudu.Core \ Infrastructure \ Executable.cs:line   165在Kudu.Core.Jobs.BaseJobRunner.RunJobInstance(JobBase作业,   IJobLogger记录器,字符串runId,字符串触发器,ITracer跟踪器,Int32   端口)在C:\ Kudu中   Files \ Private \ src \ master \ Kudu.Core \ Jobs \ BaseJobRunner.cs:第272行   --->(内部异常#0)ExitCode:-1,输出:命令'cmd / c“” run.cmd“”'由于没有输出或121的CPU活动而中止   秒。您可以增加SCM_COMMAND_IDLE_TIMEOUT应用设置(或   WEBJOBS_IDLE_TIMEOUT(如果这是WebJob)(如果需要)。,错误:命令   'cmd / c“” run.cmd“”“由于没有输出或CPU活动而中止   121秒您可以增加SCM_COMMAND_IDLE_TIMEOUT应用设置   (如果需要,则为WEBJOBS_IDLE_TIMEOUT)。   Kudu.Core.Infrastructure.CommandLineException:命令'cmd / c   ““ run.cmd”“'由于没有输出或121的CPU活动而中止   秒。您可以增加SCM_COMMAND_IDLE_TIMEOUT应用设置(或   如果需要,则为WEBJOBS_IDLE_TIMEOUT)。命令/ c   “”“ run.cmd”在   Kudu.Core.Infrastructure.IdleManager.WaitForExit(IProcess进程)在   C:\ Kudu   Files \ Private \ src \ master \ Kudu.Core \ Infrastructure \ IdleManager.cs:line   96时   Kudu.Core.Infrastructure.ProcessExtensions.d__13.MoveNext()在   C:\ Kudu   Files \ Private \ src \ master \ Kudu.Core \ Infrastructure \ ProcessExtensions.cs:line   254   ---从上一个引发异常的位置开始的堆栈跟踪-   System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()在   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)   Kudu.Core.Infrastructure.Executable.d__31.MoveNext()在   C:\ Kudu   Files \ Private \ src \ master \ Kudu.Core \ Infrastructure \ Executable.cs:line   255 <---

2 个答案:

答案 0 :(得分:0)

解决方案是确保作业作为连续作业而不是触发作业运行。

答案 1 :(得分:0)

对于那些真正想使用触发式工作的人,尝试替换

host.Run();host.Start();

在您的Program.cs中,它对我有用。