远程构建Azure Python函数时ENABLE_ORYX_BUILD被移除,代码未更新
Python Azure Function Linux远程构建后代码未更新问题排查与解决
问题背景
开发Python Azure Function部署到Linux环境时,已配置远程构建所需的两个应用设置:
ENABLE_ORYX_BUILD=true SCM_DO_BUILD_DURING_DEPLOYMENT=true
使用如下Azure CLI命令推送构建包:
az functionapp deployment source config-zip -g <资源组名> -n <函数应用名> --src <zipfile> --build-remote true --verbose
部署过程仅出现一条警告信息,无报错:
Removing ENABLE_ORYX_BUILD app setting
但部署完成后,函数应用仍运行旧代码,未更新为推送的新版本。部署包包含以下文件:
function_app.pyimport azure.functions as func import logging app = func.FunctionApp(http_auth_level=func.AuthLevel.ANONYMOUS) @app.route(route="from_vscode_http_trigger") def from_vscode_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 again again, {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 )host.json{ "version": "2.0", "logging": { "applicationInsights": { "samplingSettings": { "isEnabled": true, "excludedTypes": "Request" } } }, "extensionBundle": { "id": "Microsoft.Azure.Functions.ExtensionBundle", "version": "[3.*, 4.0.0)" } }local.settings.json{ "IsEncrypted": false, "Values": { "FUNCTIONS_WORKER_RUNTIME": "python", "AzureWebJobsFeatureFlags": "EnableWorkerIndexing" } }
解决方案
1. 持久化配置远程构建应用设置
部署命令可能会自动重置应用设置,需先通过Azure CLI永久配置所需参数:
az functionapp config appsettings set -g <资源组名> -n <函数应用名> --settings ENABLE_ORYX_BUILD=true SCM_DO_BUILD_DURING_DEPLOYMENT=true
配置完成后重启函数应用,确保设置生效。
2. 修正部署包结构
- Python函数部署包需将所有代码文件放在根目录,避免嵌套文件夹。解压zip包确认
function_app.py等文件直接位于根路径,而非子文件夹下。 - 删除部署包中的
local.settings.json,该文件仅用于本地开发环境,Azure会使用门户配置的应用设置,包含它可能导致部署冲突。
3. 强制触发部署更新
在部署命令中添加--force参数,强制覆盖现有部署内容,避免缓存影响:
az functionapp deployment source config-zip -g <资源组名> -n <函数应用名> --src <zipfile> --build-remote true --force --verbose
4. 排查部署细节
- 登录Azure门户,进入函数应用的部署中心查看详细部署日志,确认构建过程是否正常完成、是否存在隐藏的错误信息。
- 通过Kudu控制台查看
/home/site/wwwroot目录下的文件,验证新代码是否已成功上传至服务器。
5. 验证运行时兼容性
- 确认函数应用的Python运行时版本与本地开发环境一致(如3.9、3.10等),可在门户配置->常规设置中查看或调整。
- 检查
host.json中的扩展包版本是否兼容当前运行时,避免因依赖不匹配导致代码无法加载。
内容的提问来源于stack exchange,提问作者Ravi Khambhati
相关产品推荐
相关产品推荐

