通过在host.json文件中指定以下内容,我已经在http触发azure函数(v1)上指定了超时时间
{
"functionTimeout": "00:10:00"
}
我已使用VS2017部署到Azure,并且可以确认此设置现在出现在Azure门户中。为了确保我也重新启动了功能应用程序。
执行函数时,即使超时设置为10分钟,它总是会在4分钟左右超时
我已经排除了其他来源的超时,因为当我在本地测试Azure函数时,它不会超时。
有人能说明为什么会这样吗?
答案 0 :(得分:1)
这是预期的。 Http请求在Azure站点上具有固定的超时设置。参见Azure Web App timeout setting of 230s。在这方面,Azure Web应用程序与Http触发器Azure Function之间没有区别。
对于未发送任何数据的请求,存在230秒(即不到4分钟)的超时。之后,即使实际上请求被允许继续服务器端,客户端也会获得您看到的500。
关于如何绕过此限制,如果不需要像httpresponse这样的即时反馈,则可以使用queue trigger来完成工作。
否则,请查看Durable function。您可以发送http请求以启动业务流程程序并获得成功启动的响应,依此类推。这项工作正在协调器和活动功能中进行处理,我们不必担心超时(因为它们也是非http触发器)。
答案 1 :(得分:0)
Microsoft 的 Azure Functions 团队添加了一个配置选项,可让 Azure Functions 应用程序增加超时。
完整答案@Build5Nines.com Azure Functions: Extend Execution Timeout Past 5 Minutes
简而言之,编辑host.json并设置functionTimeout:
// Set functionTimeout to 10 minutes
{
"functionTimeout": "00:10:00"
}