Azure Webjobs 超时,未收到来自 webapi 的响应

Azure Webjobs timing out, not receiving response from webapi

我有一个访问 WebApi 的 Azure Webjob。 WebApi 在 4 - 5 分钟内发回确认。因此,我已宣布 HttpClient 的超时为 10 分钟。

现在,如果 WebApi 在不到 4 分钟内返回响应,它就可以正常工作。但是,如果 WebApi 在 4 分 30 秒内返回请求的响应,则 azure webjob 不会收到此确认。相反,WebJob 上的 HttpClient 正在等待 10 分钟,然后超时。我错过了 Webjob 上的某种超时吗?

如果您在 BrokeredMessages 的上下文中执行较长的 运行ning 任务或函数,它们的超时硬编码为 5 分钟。

利用 Task 我将我的长 运行ning 函数放在一个函数中并将其传递给此函数以 运行 和 "relock" BrokeredMessage:

/// <summary>
/// Maximum time lockout for a BrokeredMessage is 5 minutes. This allows the
/// timer to relock every 4 minutes while waiting on Task parameter to complete.
/// </summary>
/// <param name="task"></param>
/// <param name="message"></param>
private void WaitAndRelockMessage( Task task, BrokeredMessage message )
{
    var myTimer = new Timer( new TimerCallback( RelockMessage ), message, 240000, 240000 );

    task.Wait();

    myTimer.Dispose();
}

private void RelockMessage( object message )
{
    try { ((BrokeredMessage)message).RenewLock(); }
    catch( OperationCanceledException ) { }
}

示例用法:

var task = Task.Run( async () => { await m_service.doWork(); } );

WaitAndRelockMessage(task, message);

没有发送回任何数据的请求有 230 秒的超时。请在以下线程中查看@David Ebbo 的回答。

https://social.msdn.microsoft.com/Forums/en-US/17305ddc-07b2-436c-881b-286d1744c98f/503-errors-with-large-pdf-file?forum=windowsazurewebsitespreview

没有发送回任何数据的请求有 230 秒(即不到 4 分钟)的超时。在那之后,客户端得到你看到的 500,即使实际上允许请求继续服务器端。

所以没有收到Web响应的问题API与Azure Web App的超时限制有关。我也在我这边测试。尽管我在 web.config 中将 executionTimeout 设置为 10 分钟。

<httpRuntime targetFramework="4.6" executionTimeout="600" />

如果服务端发送响应的时间需要超过230s。我的客户端会出现 500 错误。

public IEnumerable<string> Get()
{
    Thread.Sleep(270000);
    return new string[] { "value1", "value2" };
}

我建议你接受@Thomas的建议。从您的 Web 将您的响应写入队列 API 并从队列中获取您需要的响应。

So, is there no method to bypass this timeout?

230 秒的限制也可以在下面的文章中证明。

一般空闲请求超时会导致客户端在 230 秒后断开连接。

https://github.com/projectkudu/kudu/wiki/Configurable-settings

我还没有找到任何方法来修改 Azure Web 应用程序的超时。请尝试我上面提到的解决方法。