从 Azure 函数发出长 运行 HTTP 请求时 HTTP 超时
HTTP timeout when making long running HTTP request from Azure Function
我目前正在编写一个 Azure Function 应用程序以从 HTML 生成大型 PDF。我有一个通过网站推送到的 Azure 服务总线队列,然后队列消息由 Azure 函数(基本层应用程序服务计划)处理
为了生成 PDF,我从 Azure 函数中向 Azure 云服务发出 HTTP 请求,该函数为我生成一个字节数组,我为此写入 Azure Blob 存储。
有时 HTTP 请求最多可能需要 30 分钟。当我现在发出任何超过 4 分 30 秒的 HTTP 请求时,我永远不会得到响应。如果我的假设是正确的,那是因为 Cloud Service 和 Azure Functions 之间的连接超时。
有没有人有任何建议允许使用此基础结构的更长 运行 HTTP 请求?
您可能在云服务端遇到空闲超时。要解决此问题,请在 InputEndpoint (https://docs.microsoft.com/en-us/azure/cloud-services/cloud-services-configuration-and-management-faq#how-do-i-set-the-idle-timeout-for-azure-load-balancer) 上设置 idleTimeoutInMinutes:
<Endpoints>
<InputEndpoint name="Endpoint1" protocol="tcp" port="10100" idleTimeoutInMinutes="30" />
</Endpoints>
然而,这可能是错误的解决方案。您不应设计一个需要 30 分钟来自活动 HTTP 连接的响应的系统。可能导致连接失败的变量太多。您应该使用调用云服务的异步模型来启动作业,该作业将 return 一个 jobid,然后定期调用云服务来检查作业的状态。有关设计模式,请参阅 https://docs.microsoft.com/en-us/azure/architecture/patterns/async-request-reply。
我目前正在编写一个 Azure Function 应用程序以从 HTML 生成大型 PDF。我有一个通过网站推送到的 Azure 服务总线队列,然后队列消息由 Azure 函数(基本层应用程序服务计划)处理
为了生成 PDF,我从 Azure 函数中向 Azure 云服务发出 HTTP 请求,该函数为我生成一个字节数组,我为此写入 Azure Blob 存储。
有时 HTTP 请求最多可能需要 30 分钟。当我现在发出任何超过 4 分 30 秒的 HTTP 请求时,我永远不会得到响应。如果我的假设是正确的,那是因为 Cloud Service 和 Azure Functions 之间的连接超时。
有没有人有任何建议允许使用此基础结构的更长 运行 HTTP 请求?
您可能在云服务端遇到空闲超时。要解决此问题,请在 InputEndpoint (https://docs.microsoft.com/en-us/azure/cloud-services/cloud-services-configuration-and-management-faq#how-do-i-set-the-idle-timeout-for-azure-load-balancer) 上设置 idleTimeoutInMinutes:
<Endpoints>
<InputEndpoint name="Endpoint1" protocol="tcp" port="10100" idleTimeoutInMinutes="30" />
</Endpoints>
然而,这可能是错误的解决方案。您不应设计一个需要 30 分钟来自活动 HTTP 连接的响应的系统。可能导致连接失败的变量太多。您应该使用调用云服务的异步模型来启动作业,该作业将 return 一个 jobid,然后定期调用云服务来检查作业的状态。有关设计模式,请参阅 https://docs.microsoft.com/en-us/azure/architecture/patterns/async-request-reply。