问题描述

Azure Data Factory 通过 Pipeline 调用Azure Function Http Trigger时遇到返回错误” 500 - The request timed out.”

 

问题分析

通过Azure Function的高级工具(Kudu) 查看Function 返回500错误,原因是由于达到了230秒的响应请求的时间。230 秒是 HTTP 触发的函数在响应请求时需要的最长时间,这起因于 Azure 负载均衡器的默认空闲超时,在Azure平台中,这个超时时间是无法修改的。

 

出现请求执行230秒以及以上的时间,是因为函数中处理的业务遇见了大文件操作, 对于这种处理时间较长的情况,建议考虑使用 Durable Functions 异步模式 或 延迟实际工作并返回即时响应。

  • Durable Function的异步操作:可以满足长时间运行的操作,当客户端发生请求后触发启动业务流程协调程序,目标函数会返回Http 202,其中包含值为“statusQueryGetUri”的 Location 标头。客户端轮询 Location 标头中的 URL。 客户端会继续看到包含 Location 标头的 HTTP 202 响应。实例完成或失败后,Location 标头中的终结点返回 HTTP 200。

【Azure 应用服务】调用Azure Function经常提示超时的分析_Azure Function

 

 

参考资料

函数应用超时:​​https://docs.azure.cn/zh-cn/azure-functions/functions-scale#function-app-timeout-duration​

Durable Function异步模式:​​https://docs.azure.cn/zh-cn/azure-functions/durable/durable-functions-overview?tabs=csharp#pattern-3-async-http-apis​

当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!