【发布时间】:2020-05-07 02:39:19
【问题描述】:
我添加了 http 触发的 azure 函数并将其部署在函数应用程序中。函数应用程序仅包含一个此 http 按需触发 azure 函数。功能应用有应用服务计划,而不是消费计划。
另外,函数应用版本是 ~1。所以超时是无限的。
在 azure 函数代码中,我正在读取一个包含数千条历史记录的文件并处理这些记录。这项任务需要一个多小时的时间。这是一次任务。
当我在部署后调用此 azure 函数时,它会被调用,一段时间后我注意到它再次被调用并再次处理已处理的记录。
谁能帮我理解一下azure函数的调用策略,如果azure函数长时间运行没有任何状态,它会自己回调吗?
如果是,如何阻止它再次回调,直到它完成处理。
【问题讨论】:
-
那么,如果我将处理转移到异步函数并在没有等待的情况下调用它并发送 HTTP 触发成功响应,这会解决我的问题吗?
-
您正在使用应用服务计划。但无论函数应用超时设置如何,230 秒都是 HTTP 触发函数响应请求所需的最长时间。这是因为 Azure 负载均衡器的默认空闲超时。对于更长的处理时间,请考虑使用 Durable Functions 异步模式或推迟实际工作并立即返回响应。
标签: c# azure triggers azure-functions azure-function-app