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

添加大依赖包后Azure WebApp生产部署失败求助

解决Azure WebApp部署含deepparse大依赖失败的方案

针对添加deepparse后部署超时/容器重启失败的问题,以下是几个可行的解决思路:

1. 构建包含所有依赖的离线部署包

核心思路是在CI构建阶段完成所有依赖(包括deepparse)的安装,打包时将依赖目录一同加入,避免Azure在线安装耗时过长。

修改Bitbucket的构建步骤:

image: python:3.9
name: Build app with bundled dependencies
caches:
  - pip
script:
  - pip install --upgrade pip
  # 将所有依赖安装到项目内的python_dependencies目录
  - pip install -r requirements.txt --target ./python_dependencies
  # 创建启动脚本,把依赖目录加入Python路径
  - echo '#!/bin/bash' > startup.sh
  - echo 'export PYTHONPATH="$PYTHONPATH:./python_dependencies"' >> startup.sh
  - echo 'flask run --host=0.0.0.0 --port=8000' >> startup.sh # 替换为你的实际启动命令
  - chmod +x startup.sh
  - apt-get -y update && apt-get -y install zip
  # 打包项目文件+依赖目录+启动脚本
  - zip -r $BITBUCKET_BUILD_NUMBER.zip . ./python_dependencies startup.sh
artifacts:
  - *.zip

部署后,在Azure WebApp的配置-常规设置里,把启动命令改为./startup.sh,应用会直接使用打包好的依赖,无需在线安装。

2. 改用Docker容器部署

将整个应用打包成Docker镜像,在CI阶段完成依赖安装和镜像构建,推送到Azure容器注册表(ACR)后直接部署到WebApp。这种方式彻底避免了Azure部署时的依赖安装步骤。

示例Dockerfile:

FROM python:3.9-slim

WORKDIR /app

# 安装deepparse所需的系统依赖(如libgomp)
RUN apt-get update && apt-get install -y --no-install-recommends \
    libgomp1 \
    && rm -rf /var/lib/apt/lists/*

COPY requirements.txt .
# 使用--no-cache-dir减小镜像体积,加快构建速度
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

# 设置启动命令
CMD ["flask", "run", "--host=0.0.0.0", "--port=8000"]

在Bitbucket Pipeline中添加镜像构建、推送ACR、部署到WebApp的步骤,替代原有的zip部署流程。

3. 延长Azure容器启动超时(需权限)

如果能获取Azure资源的管理权限,设置WEBSITES_CONTAINER_START_TIME_LIMIT环境变量,给依赖安装足够时间。比如设置为30分钟(1800秒):

az webapp config appsettings set --name <你的WebApp名称> --resource-group <资源组名称> --settings WEBSITES_CONTAINER_START_TIME_LIMIT=1800

也可以在Azure门户的WebApp配置-应用设置中手动添加该变量。

4. 延迟导入deepparse(应急方案)

如果应用并非启动阶段就需要deepparse,可以在代码中延迟导入,避免启动时加载依赖:

# 不在文件顶部导入deepparse
def process_address(address_text):
    # 仅在需要使用时导入
    from deepparse import DeepParser
    parser = DeepParser("en") # 替换为你需要的模型
    result = parser(address_text)
    return result

同时在启动脚本中后台安装deepparse:

# startup.sh
pip install deepparse==0.9.9 &
flask run --host=0.0.0.0 --port=8000

这种方式适合非核心功能,缺点是第一次调用相关接口时会有延迟。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 05:53:24