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

优化Azure Web App上Django项目的部署耗时问题

部署提速方案与问题解决

一、跳过压缩解压步骤解决核心耗时问题

Oryx的压缩解压流程是默认用于在构建/运行阶段传递产物的机制,但可通过配置直接跳过:

  • 在Azure Web App的配置 > 应用设置中添加变量:ORYX_SKIP_COMPRESSION=true
  • 该变量会让Oryx直接将构建产物复制到目标运行目录,完全跳过Compressing content of directory '/tmp/_preCompressedDestinationDir'步骤,直接解决你遇到的800+秒耗时问题。

二、正确修改Oryx Manifest配置

自定义上传oryx-manifest.toml会被Oryx自动生成的文件覆盖,必须通过**应用设置(环境变量)**来覆盖配置项:

  • 单个配置项:直接设置对应环境变量,比如修改虚拟环境名称:ORYX_PYTHON_VIRTUAL_ENV_NAME=my_custom_env
  • 多个配置项:使用ORYX_MANIFEST_OVERRIDES变量,用分号分隔键值对,例如:
    ORYX_MANIFEST_OVERRIDES="pythonVersion=3.10;virtualEnvName=my_custom_env;skipCollectStatic=true"
    
  • 常用可覆盖项:pythonVersion、virtualEnvName、skipCollectStatic、buildCommand等。

三、通用部署提速建议

  1. 缓存虚拟环境与依赖

    • 添加应用设置ORYX_CACHE_DIR=/home/site/wwwroot/.oryx_cache,让Oryx复用之前构建的虚拟环境,避免每次重新安装所有依赖。
    • 在requirements.txt中固定依赖版本(如django==4.2.0而非django>=4.2),减少版本解析耗时。
  2. 跳过不必要的构建步骤

    • 若静态文件已提前收集并托管在CDN,添加SKIP_COLLECT_STATIC=true跳过Django的collectstatic步骤。
    • 若未涉及依赖变更,添加SKIP_BUILD=true(仅适用于已提前构建好的代码上传场景)。
  3. 小代码变更的高效部署方式

    • 增量文件同步:使用Azure CLI命令az webapp deploy --resource-group <rg-name> --name <app-name> --src-path <local-file-or-dir> --target-path /home/site/wwwroot/<target-path>,仅上传变更的文件(如视图、模板、静态文件),跳过完整构建流程。
    • Zip部署:在本地完成依赖安装和静态文件收集后,将项目打包为Zip,通过Azure门户或CLI上传,添加应用设置SCM_DO_BUILD_DURING_DEPLOYMENT=false跳过Oryx构建,直接解压运行。
    • 部署槽位交换:先将代码部署到预生产槽位,槽位部署完成后再交换到生产环境,既避免用户感知部署延迟,又能让槽位复用构建缓存。
  4. 临时升级实例资源

    • 可临时将P2v2实例升级到更高规格(如P3v2)完成构建后再降级,利用更高CPU/内存加速压缩、依赖安装等耗时步骤。

内容的提问来源于stack exchange,提问作者btavares

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 06:23:21