我有一个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.Task1.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 <---
答案 0 :(得分:0)
解决方案是确保作业作为连续作业而不是触发作业运行。
答案 1 :(得分:0)
对于那些真正想使用触发式工作的人,尝试替换
host.Run();
由host.Start();
在您的Program.cs中,它对我有用。