我想将本地 python 3.11 项目移动到 Azure Functionapp。部署过程中某处发生错误,例如
ModuleNotFoundError
。我认为这是因为可以在本地安装的软件包无法安装在 Azure Functionapp 上。我在Azure Portal中找不到错误,所以我不知道哪里出了问题。
我创建了一个基本的示例应用程序来演示我的问题
我查看了
Application Insights
-> Logs
-> traces
。它表明我找到了唯一的 HTTP 端点,但尚未加载。它没有说为什么。
日志流显示没有错误。
我设法在门户深处找到了我的错误,位于
Diagnose and solve problems
-> Availability and Performance
-> Functions that are not triggering
。这里显示ModuleNotFoundError: No module named 'somenonexistingmodule'
。然而,这些日志似乎至少延迟了 15 分钟,因此每次部署后我都必须等待 15 分钟才能找出问题所在。
是否有可能立即出现任何部署错误?当函数由于错误而不想加载时,为什么部署过程不会抛出错误?
确保您在函数应用程序中使用有效的 pip 模块进行部署,此外,在您的代码中,您只是导入一个模块,而不是在函数代码中的任何地方使用它。为了解决您的错误,请确保您的requirements.txt 文件中包含有效的模块。另外,尝试在本地运行该函数以获取错误。
My Function code:-
我使用pandas作为外部模块。
import azure.functions as func
import logging
import pandas
app = func.FunctionApp(http_auth_level=func.AuthLevel.ANONYMOUS)
@app.route(route="http_trigger")
def http_trigger(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
name = req.params.get('name')
if not name:
try:
req_body = req.get_json()
except ValueError:
pass
else:
name = req_body.get('name')
if name:
return func.HttpResponse(f"Hello, {name}. This HTTP triggered function executed successfully.")
else:
return func.HttpResponse(
"This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.",
status_code=200
)
我的
requirements.txt
:-
azure-functions
pandas
输出:-
单击
f5 or fn+f5
在本地运行函数触发器或在终端中运行 func host start
命令:-
部署后:-
对于日志记录和监控,请参阅我的 SO 答案 1 和 SO 答案 2 以正确获取日志。
您可以从日志分析工作区中保存日志的日志部分检查日志:-y
traces