Http 触发器启用 Azure 函数超时
Posted
技术标签:
【中文标题】Http 触发器启用 Azure 函数超时【英文标题】:Http trigger enable Azure function timeout 【发布时间】:2020-07-03 19:50:37 【问题描述】:最近我开发了 Azure 功能,可以作为 web 钩子和 http 触发器启用。在这个函数中,我得到了 JSON 有效载荷,其中包含下载 URL。
我担心在某些情况下下载内容可能有大文件(大约 200 MB 到 300 MB),并且根据 Azure 文档,http 触发器启用 azure 函数超时为 MAX = 230 秒。
我已经在使用 async/await 来下载如下文件。
await fileBlob.UploadFromStreamAsync(webClient.OpenRead(downloadItem.DownloadUrl));
我的问题如下。
-
如果我的函数超时,还有哪些替代选项?
当我从第三方服务器下载文件时,Azure 是否会继续计算秒数?
在我的 JSON 负载中,我有 2-3 个下载 URL。怎样才能开始下载所有的URL并行而不是一个一个?
【问题讨论】:
【参考方案1】:听起来非常适合耐用功能 - Fan-out pattern: https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-cloud-backup?tabs=csharp
您的 http 触发函数将启动一个协调器。这将启动 n 个活动功能。每个 URL 一个。
【讨论】:
感谢您的回复。我确实探索了这个选项,但这里的问题是单个工作函数也可能超时。就像您提到的那样,编排器将启用 2-3 个子函数来下载文件,但在子函数内部,可能会对其施加 243 秒的超时限制。你的想法? 活动函数不受240秒的HTTP超时时间的约束,只与一般的函数超时时间(在消费计划中运行时)绑定。但这至少需要 5 分钟 好的。你的意思是说 Main Orchestrator 函数是 HTTP 绑定的,因此有 240 秒的超时时间,而子函数不是 http 绑定的,因此它的超时时间至少为 5 分钟? 几乎:您将拥有三个功能:1) HTTP 触发(受 240 秒 HTTP 超时限制)。 2)Orchestrator(实际上不是任何超时约束)。 3)Activity Function(受通用Function超时约束,至少5min) 好的。知道了。意味着 1) 第三方服务器将启用主要的 HTTP 触发器启用功能,该功能将提取必要的数据并激活 2) 协调器功能,这将进一步启用 3) 多个活动功能。此处 240 秒超时仅适用于 HTTP,Orchestrator & Activity 函数有 5 分钟的最小超时,根据 Azure 文档可以延长至 10 分钟或更长时间。以上是关于Http 触发器启用 Azure 函数超时的主要内容,如果未能解决你的问题,请参考以下文章