Http 触发器 Azure 函数 v2 (python) 根据预期执行整个逻辑,但在 Web 请求 4 分钟后给出 5



我创建了一个Http触发的Python Azure函数,根据数据大小,处理整个业务逻辑需要3-10分钟。

在使用邮递员或python web请求触发此功能时,它只等待响应到4分钟。如果函数在那时执行,它会给出预期的响应,否则将返回 504 网关超时错误。 即使它在请求端给出 504 错误,Azure 函数也会按照预期处理整个负载,并且不会失败。

由于请求的响应负责管道中的后续步骤,因此捕获它对我来说变得很重要。我已经尝试过获取和开机自检请求。

谁能帮我解决这个问题?

如下所述:

无论函数应用超时设置如何,230 秒都是 HTTP 触发函数可能需要的最长时间 响应请求。这是因为默认空闲超时为 Azure 负载均衡器。对于更长的处理时间,请考虑使用 持久函数异步模式或延迟实际工作并返回 立即响应。

因此,超时的不是您的函数,而是因为它是 http 触发的函数,所以它是前面的 LB。

您应该以不同的方式实现长时间运行的过程。例如,通过http触发的接收数据。这个获取数据并将其放入队列中。然后,您有第二个队列触发的函数,该函数不会长时间处理并将结果写入某处,例如写入 blob 存储。

最后,我想出了解决我面临的问题的方法。

让我在这里重申我的完整场景:

完整方案 :我有一个 ADF 管道,Azure 函数是其中的组件之一,其次是其他各种函数。当我的 AF 大约需要 30 分钟来执行业务逻辑并且默认超时响应在 4 分钟后自动抛出默认超时响应时,就会出现原始问题,这会中断流程并且不会执行 AF 管道中的下一个项目,这些项目应在理想情况下成功完成 AF 组件后运行。

解决方案:我将单个管道中断为 2,并使用 Azure 逻辑应用。现在让我解释一下点之间的联系。

我将 azure 函数转换为在恶魔线程中处理所有耗时的任务,并返回对我的 HTTP 请求的响应。这解决了我的 4 分钟超时问题。现在第二个问题是在完成 Azure 函数(耗时任务(后触发管道中的下一个组件。因此,我创建了一个 http 触发器逻辑应用,并在 Azure 函数中的任务完成结束时触发它。此逻辑应用依次触发下一个管道并以级联方式执行组件。

相关内容

最新更新