Azure Functions long duration 和 App Service Plan, Durable function

Azure Function long duration and App Service Plan, Durable function

我正在准备 AZ-204 认证。

我们想长时间执行一个函数。解决方案(在 Microsoft 文档中)是使用 App service plan 或 durable functions

在一次练习测试中,我发现对以下问题的回答令人困惑:

"您开发了一个 HTTP 触发的 Azure Function 应用程序来处理 Azure 存储 blob 数据。该应用程序是使用 blob 上的输出绑定触发的。 该应用程序在四分钟后继续超时。应用程序必须处理 blob 数据。 您需要确保应用程序不会超时并处理 blob 数据。" 建议的答案:

解决方案 1:将应用配置为使用应用服务托管计划并启用 Always On 设置。 应该是YES还是NO??

解决方案2:使用Durable Function异步模式处理blob数据。 应该是 YES 还是 NO ??

解决方案 3:将 HTTP 触发器负载传递到 Azure 服务总线队列中,由队列触发器函数处理,return 立即响应 HTTP 成功。 应该是 YES 还是 NO ??

根据我准备的,三个答案都是正确的。谁能证实一下?

我不完全理解函数的触发器。从文字上看好像是一个HTTP触发器和一个blob触发器??但我会假设它是一个 HTTP 触发器,它对 blob 数据进行一些处理超过 4 分钟。 对于这种情况,正确答案是否,是,是 imo。

解决方案一: https://docs.microsoft.com/en-us/azure/azure-functions/functions-scale#timeout 无论应用服务计划如何,HTTP 触发器的最大超时为 230 秒。

方案二: https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-overview?tabs=csharp#async-http 如果您 return 按照文档中针对此模式的说明立即做出响应,我会认为这是真的。 durable functions我用过不少,肯定能解决问题,而且还可以查看状态,取消也很方便。

方案三: 由于我们将我们的工作从 HTTP 函数分离到 Queue,它能够 运行 10-infinity(取决于计划)所以这也被认为是正确的。函数的一个关键概念是分离工作和队列的能力,这是最常见的方法。在架构上我可能更喜欢这种方法,但持久函数也可以。

请询问您是否有任何问题需要澄清并祝您考试顺利。

答案是否定的

正确的解决方案:将 HTTP 触发器有效负载传递到 Azure 服务总线队列中,由队列触发器函数处理,return 立即响应 HTTP 成功。