Azure 中的函数停止 运行 没有解释

Function in Azure stops running without explanation

我在 Azure Functions 中有一个程序,运行在 Python 中并由 HTTP 触发器触发。此功能处理并插入数据库大型 Excel 文件,超过 10,000 行和大约 10 列。该过程包括更改文件中的某些内容以及在数据库中进行匹配,因此可能需要相当长的时间才能 运行.

我们目前有 Premium 计划,根据 Microsoft 文档,该计划应该没有任何执行时间限制: https://docs.microsoft.com/en-us/azure/azure-functions/functions-scale 然而,大约一小时后,该功能就停止工作,没有任何错误警告或问题。它只是停止,没有任何解释或错误日志,包括我们创建的自定义日志。 现在执行时间设置为两个小时,在这段代码中:

"version": "2.0",
"extensionBundle": {
 "id": "Microsoft.Azure.Functions.ExtensionBundle",
 "version": "[2.*, 3.0.0)"
 },
"functionTimeout": "02:00:00" 

由于该函数必须 return 一个短时间内的 HTTP 状态,这个过程的长部分在另一个线程中执行。

t = threading.Thread(target=insertIntoDb, args=(data, fileName))
t.start()
return func.HttpResponse("File is currently being processed", status_code=202) 

有没有人知道发生了什么或者我可以检查什么来解决这个问题?谢谢。

即使您在不同的线程上执行插入工作,执行 http 请求处理的主线程也可能结束,甚至函数宿主运行时也可能在几分钟后结束。对于您的用例,更可取的是接收请求并将请求详细信息[不是数据]输入 queue 并在 durable functionqueue trigger。请参阅 this,了解如何处理 Azure 中的长 运行 逻辑 - 限制和指导。

即使在Premium计划中,函数执行也只保证60分钟,不是无限制。参考这个MS doc