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

Vercel部署Django时出现Serverless Function超250MB错误

Vercel部署Django时Serverless函数超250MB解压限制的解决办法

问题背景

部署Django到Vercel时触发错误:

A Serverless Function has exceeded the unzipped maximum size of 250 MB.

已移除非必要依赖、跳过collectstatic、删除项目大文件,本地依赖总大小不足100MB,但问题仍存在。已安装的依赖列表中包含大量开发专属工具(如django-debug-toolbar、ipython等)。

实际解决步骤

1. 移除生产环境不需要的依赖

你的依赖列表里有不少仅开发阶段用的工具,这是体积膨胀的核心原因:

  • 直接删除django-debug-toolbar、ipython、matplotlib-inline、django-sql-explorer这类非生产必需包
  • 拆分依赖文件:将开发依赖留在requirements.txt,生产依赖单独写进requirements-prod.txt,Vercel构建时指定安装生产依赖:
    pip install --no-cache-dir -r requirements-prod.txt
    

2. 配置Vercel打包规则,排除冗余文件

在项目根目录创建/修改vercel.json,限制Serverless函数仅打包必要内容:

{
  "functions": {
    "api/**/*.py": {
      "includeFiles": "!(static/**|media/**|tests/**|__pycache__/**|*.pyc|*.pyo)"
    }
  },
  "routes": [
    {
      "src": "/static/(.*)",
      "dest": "/static/$1"
    },
    {
      "src": "/media/(.*)",
      "dest": "/media/$1"
    },
    {
      "src": "/(.*)",
      "dest": "/api/index.py"
    }
  ]
}

此配置将静态/媒体文件交由Vercel静态资源服务托管(不占用函数体积),同时排除测试、缓存等无用文件。

3. 用.vercelignore彻底屏蔽无关目录

在项目根目录创建.vercelignore文件,添加以下内容:

.git/
.venv/
node_modules/
__pycache__/
*.pyc
*.pyo
tests/
docs/
*.log

确保Vercel打包时不会包含这些冗余内容。

4. 优化依赖安装方式

在Vercel的构建命令中加入--no-cache-dir,避免缓存文件被打包:

pip install --no-cache-dir -r requirements-prod.txt && python manage.py collectstatic --noinput

5. 拆分函数(极端情况)

如果以上操作后仍超标,可将Django项目拆分为多个独立Serverless函数:

  • 比如将管理后台、API接口、静态页面分别作为单独函数部署
  • 每个函数仅加载自身所需的依赖,降低单个函数的体积

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 15:26:25