You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

远程构建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.py
    import 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 19:07:18