Триггерное веб-задание выполняется полностью, а затем прерывается с истечением времени ожидания через 121 секунду - PullRequest
0 голосов
/ 24 июня 2019

У меня есть веб-задание, которое успешно запускается в Azure при добавлении нового элемента в очередь хранения.

Когда он запускается, я проверяю журналы, и весь написанный код выполняется правильно, но веб-задание остается в состоянии «все еще выполняется», и через 121 секунду после выполнения оно прерывается.

Вот метод, который запускается, за которым следует файл журнала, в котором вы видите, что «Начать обработку содержимого» записывается в журнал, а «Обработка содержимого завершена» записывается в журнал. Это говорит о том, что все выполнено нормально, и, насколько я знаю, нет ничего особенного, что мне нужно сделать, чтобы сигнализировать, что это было успешно выполнено.

Итак, я думаю, что веб-задания должны работать так, что это будет считаться успешным выполнением. Вместо этого он помечен как «Неудачный» на панели инструментов и полностью останавливает веб-работу (даже если он предназначен для работы в непрерывном режиме). Кроме того, для службы приложений установлено значение Всегда включено.

Рекомендации по ошибке по увеличению таймаута не имеют смысла. Все, что нужно сделать, это вместо того, чтобы выдержать 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");
   }
  • [24.06.2009 00:08:11> 8a8d8d: INFO] Детали триггера: MessageId: 086184dd-f9be-4e1d-b1e7-49707bd1a4e7, DequeueCount: 1, InsertionTime: 24.06.2009 12:07:48 +00: 00 [24.06.2009 00:08:11> 8a8d8d: INFO] Начать обработку контента [24.06.2009 00:08:15> 8a8d8d: INFO] Обработка контента Завершено [24.06.2009 00:08:15> 8a8d8d: INFO] info: Function.ProcessQueueMessage [0] [24.06.2009 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 "" "была прервана из-за отсутствия Вывод ни активности процессора в течение 121 секунды. Вы можете увеличить Настройка приложения SCM_COMMAND_IDLE_TIMEOUT (или WEBJOBS_IDLE_TIMEOUT, если это WebJob) при необходимости. cmd / c "" run.cmd "" [24.06.2009 00:12:17> 8a8d8d: SYS INFO] Статус изменен на Неудачный [24.06.2009 00:12:17> 8a8d8d: SYS ERR] System.AggregateException: одна или несколько ошибок произошло. ---> Kudu.Core.Infrastructure.CommandLineException: Command cmd / c "" run.cmd "" "был прерван из-за отсутствия выходных данных или активности процессора для 121 секунда Вы можете увеличить настройки приложения SCM_COMMAND_IDLE_TIMEOUT (или WEBJOBS_IDLE_TIMEOUT, если это WebJob), если необходимо. cmd / c "" run.cmd "" в Kudu.Core.Infrastructure.IdleManager.WaitForExit (процесс IProcess) в C: \ Куду Файлы \ Private \ SRC \ мастер \ Kudu.Core \ Инфраструктура \ IdleManager.cs: линия 96 в Kudu.Core.Infrastructure.ProcessExtensions.d__13.MoveNext () в C: \ Куду Файлы \ Private \ SRC \ мастер \ Kudu.Core \ Инфраструктура \ ProcessExtensions.cs: линия 254 --- Конец стека трассировки из предыдущего места, где было сгенерировано исключение --- в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task задача) в Kudu.Core.Infrastructure.Executable.d__31.MoveNext () в C: \ Куду Файлы \ Private \ SRC \ мастер \ Kudu.Core \ Инфраструктура \ Executable.cs: линия 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, Func 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, String аргументы, Object [] args) в C: \ KuduФайлы \ Private \ SRC \ мастер \ Kudu.Core \ Инфраструктура \ Executable.cs: линия 165 в Kudu.Core.Jobs.BaseJobRunner.RunJobInstance (JobBase, Регистратор IJobLogger, идентификатор строки, триггер строки, трассировка ITracer, Int32 порт) в C: \ Kudu Файлы \ Private \ src \ master \ Kudu.Core \ Jobs \ BaseJobRunner.cs: строка 272 ---> (Внутреннее исключение # 0) ExitCode: -1, Вывод: Команда 'cmd / c "" run.cmd "" "была прервана из-за отсутствия выходных данных или активности процессора для 121 секунд. Вы можете увеличить настройку приложения SCM_COMMAND_IDLE_TIMEOUT (или WEBJOBS_IDLE_TIMEOUT, если это WebJob) при необходимости. Ошибка: команда cmd / c "" run.cmd "" "был прерван из-за отсутствия выходных данных или активности процессора для 121 секунда Вы можете увеличить настройки приложения SCM_COMMAND_IDLE_TIMEOUT (или WEBJOBS_IDLE_TIMEOUT, если это WebJob), если необходимо., Kudu.Core.Infrastructure.CommandLineException: команда 'cmd / c "" run.cmd "" 'был прерван из-за отсутствия выходных данных или активности процессора для 121 секунд. Вы можете увеличить настройку приложения SCM_COMMAND_IDLE_TIMEOUT (или WEBJOBS_IDLE_TIMEOUT, если это WebJob) при необходимости. cmd / c "" run.cmd "" в Kudu.Core.Infrastructure.IdleManager.WaitForExit (процесс IProcess) в C: \ Куду Файлы \ Private \ SRC \ мастер \ Kudu.Core \ Инфраструктура \ IdleManager.cs: линия 96 в Kudu.Core.Infrastructure.ProcessExtensions.d__13.MoveNext () в C: \ Куду Файлы \ Private \ SRC \ мастер \ Kudu.Core \ Инфраструктура \ ProcessExtensions.cs: линия 254 --- Конец стека трассировки из предыдущего места, где было сгенерировано исключение --- в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task задача) в Kudu.Core.Infrastructure.Executable.d__31.MoveNext () в C: \ Куду Файлы \ Private \ SRC \ мастер \ Kudu.Core \ Инфраструктура \ Executable.cs: линия 255 <--- </p>

1 Ответ

0 голосов
/ 26 июня 2019

Решение состоит в том, чтобы задание выполнялось как непрерывное задание, а не как запущенное задание.

...