【问题标题】:Azure Function Timeout on Consumption PlanAzure Function Timeout on Consumption Plan
【发布时间】:2019-05-18 08:09:41
【问题描述】:

通过在我的 host.json 文件中指定以下内容,我已在我的 http 触发 azure 函数 (v1) 上指定了超时

{
  "functionTimeout": "00:10:00"
}

我已使用 VS2017 部署到 Azure,并且可以确认此设置现在出现在 Azure 门户中。为了确定,我还重新启动了函数应用程序。

当我执行我的函数时,它总是超时或大约 4 分钟,即使超时已设置为 10 分钟

我已经排除了其他来源发生的超时,因为当我在本地测试 Azure 函数时它不会超时。

谁能解释为什么会这样?

【问题讨论】:

  • 你说的是http触发器吗?
  • 是的,我会澄清我的问题

标签: azure azure-functions


【解决方案1】:

这是预期的。 Http 请求在 Azure 站点上具有固定的超时设置。见Azure Web App timeout setting of 230s。在这方面,Azure Web app 和 Http 触发 Azure Function 没有区别。

对于未发回任何数据的请求,有 230 秒(即略少于 4 分钟)超时。之后,客户端得到你看到的 500,即使实际上请求被允许继续服务器端。

至于如何绕过这个限制,如果不需要像 httpresponse 这样的即时反馈,您可以使用queue trigger 来完成您的工作。

否则,请查看Durable function。您可以发送一个 http 请求来启动一个协调器并获得一个成功启动的响应等等。工作正在编排器和活动函数中处理,我们无需担心超时(因为它们也是非 http 触发器)。

【讨论】:

  • 感谢持久功能的链接!
  • @link64 不客气。你还有其他困惑吗?如果不是,您介意接受答案以结束您的问题吗?
【解决方案2】:

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"
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    • 2012-04-29
    相关资源
    最近更新 更多