WebJob运行失败,原因是:System.Threading.ThreadAbortException:线程正在中止

时间:2015-02-27 14:13:35

标签: azure azure-webjobs

我的Azure WebJob在运行了20分钟后出现以下日志输出失败:

[02/27/2015 00:30:11 > 3e9b72: SYS INFO] Status changed to Initializing
[02/27/2015 00:30:21 > 3e9b72: SYS INFO] Run script 'Namespace.Class.DataProcessor.exe' with script host - 'WindowsScriptHost'
[02/27/2015 00:30:21 > 3e9b72: SYS INFO] Status changed to Running
[02/27/2015 00:30:23 > 3e9b72: INFO] Found the following functions:
[02/27/2015 00:30:23 > 3e9b72: INFO] Namespace.Class.DataProcessor.Functions.ManualTrigger
[02/27/2015 00:30:23 > 3e9b72: INFO] Executing: 'Functions.ManualTrigger' because This was function was programmatically called via the host APIs.
[02/27/2015 00:51:35 > 3e9b72: ERR ] Thread was being aborted.
[02/27/2015 00:51:35 > 3e9b72: SYS INFO] WebJob process was aborted
[02/27/2015 00:51:35 > 3e9b72: SYS INFO] Status changed to Stopped
[02/27/2015 00:51:35 > 3e9b72: SYS INFO] Status changed to Failed
[02/27/2015 00:51:35 > 3e9b72: SYS ERR ] WebJob run failed due to: System.Threading.ThreadAbortException: Thread was being aborted.
   at Kudu.Core.Jobs.BaseJobRunner.RunJobInstance(JobBase job, IJobLogger logger, String runId)
   at Kudu.Core.Jobs.TriggeredJobRunner.<>c__DisplayClass2.<StartJobRun>b__0(Object _)

按计划在系统安静的情况下每天开始一次,在20分钟后,它会因错误而失败。 仅在调度程序自动触发作业时才会出现此错误。如果从站点下的Azure WebJob面板手动触发,即使它运行了几个小时也没有错误。

作业应用程序输出'。'每一步都让Azure不再认为它是空闲的。我还在作业运行的网站上配置了以下设置,如果需要一段时间来响应或输出某些内容,它就会阻止它超时:

WEBJOBS_IDLE_TIMEOUT = 14400 SCM_COMMAND_IDLE_TIMEOUT = 14400

作业操作是一个POST请求来触发作业,我怀疑这是一种手动启动作业的机制(并且没有超时)。

如何在20分钟后防止此失败?我需要更改/添加哪些设置才能让作业运行超过20分钟?

1 个答案:

答案 0 :(得分:-1)

确保将网站配置为在启用“始终开启”设置的情况下运行。这需要一个标准级别的网站(在免费网站中不可用)。来自documentation

  

永远开启。默认情况下,如果Web应用程序对某些应用程序空闲,则会将其卸载   一段的时间。这使系统可以节省资源。在Basic或   在标准模式下,您可以启用Always On以保持应用程序全部加载   时间。 如果您的应用运行连续的Web作业,则应启用“始终”   打开,或者Web作业可能无法可靠地运行。