我正在准备 AZ-204 认证。
我们想要长时间执行一个函数。解决方案(在 Microsoft 文档中)是使用应用服务计划或持久功能
在一次练习测试中,我发现以下问题的回答令人困惑:
“您开发了一个 HTTP 触发的 Azure Function 应用来处理 Azure 存储 blob 数据。该应用是使用 blob 上的输出绑定(bind)来触发的。 四分钟后应用程序继续超时。应用程序必须处理 blob 数据。 您需要确保应用程序不会超时并处理 blob 数据。” 建议答案:
解决方案1:将应用配置为使用应用服务托管计划并启用“始终开启”设置。 应该是"is"还是“否”?
解决方案2:使用 Durable Function 异步模式来处理 Blob 数据。 应该是"is"还是“否”?
解决方案3:将 HTTP 触发器有效负载传递到 Azure 服务总线队列中,以由队列触发器函数进行处理,并立即返回 HTTP 成功响应。 应该是"is"还是“否”?
根据我准备的内容,这三个答案都是正确的。谁能证实?
最佳答案
我不完全理解该函数的触发器。从文字上看好像是HTTP触发器和blob触发器??但我会假设它是一个 HTTP 触发器,它对 blob 数据进行了超过 4 分钟的处理。 对于这种情况,正确的答案是“不”、"is"、"is"。
解决方案1: https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#timeout 无论应用服务计划如何,HTTP 触发器的最大超时都是 230 秒。
解决方案 2: https://learn.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-overview?tabs=csharp#async-http 如果您按照此模式的文档所述立即返回响应,我认为这是正确的。我已经使用过很多持久函数,它肯定能够解决问题,并且还允许检查状态,非常容易取消。
解决方案 3: 由于我们将工作从 HTTP 函数分离到队列中,因此它能够运行 10 无穷大(取决于计划),因此这也被认为是正确的。函数的一个关键概念是分离工作的能力,队列是最常见的方法。从架构上来说,我可能更喜欢这种方法,但持久功能也可以工作。
如果您有任何需要澄清的问题,请询问,祝考试顺利。
关于Azure Function 长持续时间和应用服务计划,持久功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67749718/