问题描述
从VS Code部署新的Python Function App到Azure中,部署结果显示是成功的。
但是登录到门户上,却没有发现任何Function
这是什么原因导致的呢?
问题解答
进入高级开发工具(kudu页面),查看logfile中日志,可以发现Function无法加载的原因是 Error: No Module named 'azure.monitor', Cannot find module. Please check the requirements.txt file for the missiong module.
当看见如此明显的错误后,解决它当然是在 requirements.txt 文件中添加上azure.monitor包。
进入Function的文件编辑页面,提示文件只读,无法修改。
当Function App设置了环境变量 WEBSITE_RUN_FROM_PACKAGE = 1 ,该模式 要求所有依赖必须包含在 zip 包中,否则平台不会根据requirements.txt中的内容进行二次安装,所以造成函数加载失败。
最终解决这个问题的步骤是:
1:修改WEBSITE_RUN_FROM_PACKAGE 为0,或者删除该环境变量
2:在 requirements.txt 文件中添加上azure.monitor包
3:重新部署后,再无报错且Function加载成功
参考资料
直接从 ZIP 包运行 Azure 应用服务中的应用:https://docs.azure.cn/zh-cn/app-service/deploy-run-package
当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!