我的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分钟?
答案 0 :(得分:-1)
确保将网站配置为在启用“始终开启”设置的情况下运行。这需要一个标准级别的网站(在免费网站中不可用)。来自documentation:
永远开启。默认情况下,如果Web应用程序对某些应用程序空闲,则会将其卸载 一段的时间。这使系统可以节省资源。在Basic或 在标准模式下,您可以启用Always On以保持应用程序全部加载 时间。 如果您的应用运行连续的Web作业,则应启用“始终” 打开,或者Web作业可能无法可靠地运行。