WebJob иногда выбрасывает System.Threading.Tasks.TaskCanceledException - PullRequest
0 голосов
/ 01 мая 2019

У меня есть непрерывный WebJob, который выполняет функцию, которая запускается из очереди, и иногда выдает System.Threading.Tasks.TaskCanceledException.

Версия WebJobs SDK: 2.1.0

StackTrace:

Microsoft.Azure.WebJobs.Host.FunctionInvocationException: 
Microsoft.Azure.WebJobs.Host.FunctionInvocationException : Exception while executing function: Functions.ProcessCreationQueueMessage ---> 
System.AggregateException : One or more errors occurred. ---> A task was canceled. at 
System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) at
 System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) at System.Threading.Tasks.Task`1.get_Result() at
 Normandy.Portal.Reporting.Creation.WebJobs.Functions.ProcessCreationQueueMessage(String message,String& outputQueueMessage,TextWriter log) at
 D:\a\1\s\Portal\src\Normandy.Portal.Reporting.Creation.WebJobs\Functions.cs : 105 at lambda_method(Closure ,Functions ,Object[] ) at Microsoft.Azure.WebJobs.Host.Executors.VoidMethodInvoker`2.InvokeAsync(TReflected instance,Object[] arguments) at
async Microsoft.Azure.WebJobs.Host.Executors.FunctionInvoker`2.InvokeAsync[TReflected,TReturnValue](Object instance,Object[] arguments) at 
async Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.InvokeAsync(IFunctionInvoker invoker,ParameterHelper parameterHelper,CancellationTokenSource timeoutTokenSource,CancellationTokenSource functionCancellationTokenSource,Boolean throwOnTimeout,TimeSpan timerInterval,IFunctionInstance instance) at 
async Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.ExecuteWithWatchersAsync(IFunctionInstance instance,ParameterHelper parameterHelper,TraceWriter traceWriter,CancellationTokenSource functionCancellationTokenSource) 
at async Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.ExecuteWithLoggingAsync(??) 
at async Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.ExecuteWithLoggingAsync(??) ---> (Inner Exception #0) System.Threading.Tasks.TaskCanceledException : A task was canceled.<--- End of inner exception 
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at async Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.ExecuteWithLoggingAsync(??) at 
async Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.TryExecuteAsync(IFunctionInstance functionInstance,CancellationToken cancellationToken) 

WebJob:

        public void ProcessCreationQueueMessage([QueueTrigger("reportcreation")] string message, [Queue("reportretrieval")] out string outputQueueMessage, TextWriter log)
        {
            JsonSerializerSettings settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All };

            log.WriteLine(message);

        ...

            try
            {
                var jobId = _reportingService.RequestReport(req.ReportName, searchString).Result;

                var output = new RetrieveReportDataRequest()
                {
                    CreationRequest = new ReportCreationRequest()
                    {
                        UserId = req.UserId,
                        UID = req.UID,
                        CreateDate = req.CreateDate,
                        IsMultiSchoolUser = req.IsMultiSchoolUser,
                        CentreCode = req.CentreCode,
                        ReportName = req.ReportName,
                        InputSearchParameters = req.InputSearchParameters,
                    },
                    SplunkSearchParameters = searchString,
                    SplunkJobId = jobId,
                    Created = DateTime.UtcNow,
                };

                outputQueueMessage = JsonConvert.SerializeObject(output, settings);
            }
            catch (Exception ex)
            {
                log.WriteLine(ex.Message);
                throw;
            }
        }

Нет времени на выполнение заданий Это не удается один раз для определенных сообщений. Чего мне не хватает?

1 Ответ

0 голосов
/ 01 мая 2019

Это может быть связано с настройками хоста - посмотрите Azure Portal -> AppService конфигурацию, убедитесь, что для Always On установлено значение On :

AppService config

...