簡體   English   中英

持續運行的webjob在20分鍾后被終止

[英]Continuously running webjob is getting aborted after 20 Minutes

我在高級層的Web應用程序(應用程序服務)下運行Web作業。 它調用REST API端點,這需要很長時間才能返回響應。 20分鍾后,Web作業將被終止,但是根據文檔,Web作業可以在后台運行長時間運行的任務。 這似乎沒有按預期工作。

是否為網絡作業功能指定了最大超時時間?

編碼:

public async Task<HttpResponseMessage> GetAsync(Uri requestUrl)
{
    _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", GetAadAuthentication().AccessToken);
    var httpResponse = await _httpClient.GetAsync(requestUrl);
    if (!httpResponse.IsSuccessStatusCode)
    {
        ProcessFailedRequest(httpResponse);
    }

    return httpResponse;
}

異常日志:

[05/26/2017 21:28:01 > 6e349c: ERR ] Unhandled Exception: System.Threading.Tasks.TaskCanceledException: A task was canceled.
[05/26/2017 21:28:01 > 6e349c: ERR ]    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
[05/26/2017 21:28:01 > 6e349c: ERR ]    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
[05/26/2017 21:28:01 > 6e349c: ERR ]    at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
[05/26/2017 21:28:01 > 6e349c: ERR ]    at Util.testWebClient.<GetAsync>d__12.MoveNext() in d:\test\Util\testWebClient.cs:line 99
[05/26/2017 21:28:01 > 6e349c: ERR ] --- End of stack trace from previous location where exception was thrown ---
[05/26/2017 21:28:01 > 6e349c: ERR ]    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
[05/26/2017 21:28:01 > 6e349c: ERR ]    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
[05/26/2017 21:28:01 > 6e349c: ERR ]    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
[05/26/2017 21:28:01 > 6e349c: ERR ]    at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
[05/26/2017 21:28:01 > 6e349c: ERR ]    at Util.testClient.<GetForecastResultAsync>d__7.MoveNext() in d:\test\Util\testClient.cs:line 135
[05/26/2017 21:28:01 > 6e349c: ERR ] --- End of stack trace from previous location where exception was thrown ---
[05/26/2017 21:28:01 > 6e349c: ERR ]    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
[05/26/2017 21:28:01 > 6e349c: ERR ]    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
[05/26/2017 21:28:01 > 6e349c: ERR ]    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
[05/26/2017 21:28:01 > 6e349c: ERR ]    at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
[05/26/2017 21:28:01 > 6e349c: ERR ]    at AutoAggregation.Functions.<>c__DisplayClass18_0.<ProcessResultDownloadMessage>b__0(Object workItem) in d:\test\AutoAggregation\Functions.cs:line 198
[05/26/2017 21:28:01 > 6e349c: ERR ]    at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state)
[05/26/2017 21:28:01 > 6e349c: ERR ]    at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
[05/26/2017 21:28:01 > 6e349c: ERR ]    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
[05/26/2017 21:28:01 > 6e349c: ERR ]    at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
[05/26/2017 21:28:01 > 6e349c: ERR ]    at System.Threading.ThreadPoolWorkQueue.Dispatch()
[05/26/2017 21:28:01 > 6e349c: ERR ]    at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()

您是否可以使用免費的Hosting Plan等級? 這個( https://tomssl.com/2016/12/20/how-to-get-azure-webjobs-to-run-indefinitely-for-free/ )博客完全描述了相同的問題和解決方法。 對於專業用途,我建議增加托管計划

TLDR:免費計划下的應用程序池最多可以運行20分鍾。

我已將HttpClient的超時時間增加為:

_httpClient = new HttpClient();
_httpClient.Timeout=Timeout.InfiniteTimeSpan;

以前它被設置為

_httpClient.Timeout=new TimeSpan(0, 20, 0);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM