DigitalOcean App Engine部署Django应用无报错失败排查求助
问题:DigitalOcean App Platform部署Django应用无报错提示却失败的排查方法
我们已有2个配置相似的应用正常运行,现尝试部署另一款Python Django应用,但在DigitalOcean App Platform中部署时无任何报错提示就失败了。应用启动后,平台突然终止部署,相关启动日志如下:
2023-01-10T04:22:27.009643496Z Operations to perform: 2023-01-10T04:22:27.009843250Z Apply all migrations: accounts, admin, auth, authtoken, contenttypes, sessions 2023-01-10T04:22:27.025117275Z Running migrations: 2023-01-10T04:22:27.025132491Z No migrations to apply. 2023-01-10T04:22:28.914809605Z [2023-01-10 04:22:28 +0000] [3] [INFO] Starting gunicorn 20.1.0 2023-01-10T04:22:28.916522026Z [2023-01-10 04:22:28 +0000] [3] [INFO] Listening at: http://0.0.0.0:5000 (3) 2023-01-10T04:22:28.916664847Z [2023-01-10 04:22:28 +0000] [3] [INFO] Using worker: uvicorn.workers.UvicornWorker 2023-01-10T04:22:28.977228185Z [2023-01-10 04:22:28 +0000] [4] [INFO] Booting worker with pid: 4 2023-01-10T04:22:30.789477002Z [2023-01-10 04:22:30 +0000] [4] [INFO] Started server process [4] 2023-01-10T04:22:30.789716598Z [2023-01-10 04:22:30 +0000] [4] [INFO] Waiting for application startup. 2023-01-10T04:22:30.790170632Z [2023-01-10 04:22:30 +0000] [4] [INFO] ASGI 'lifespan' protocol appears unsupported. 2023-01-10T04:22:30.790507246Z [2023-01-10 04:22:30 +0000] [4] [INFO] Application startup complete.
排查步骤
- 检查端口匹配:DigitalOcean App Platform默认要求应用监听
8080端口,但日志显示当前gunicorn监听的是5000端口。需修改启动命令,将端口改为8080,例如调整gunicorn启动指令为gunicorn --bind 0.0.0.0:8080 your_project.asgi:application(适配ASGI模式)或对应WSGI的配置。 - 查看完整部署日志:当前日志仅显示应用启动阶段,平台可能在后续健康检查环节出现问题。进入DigitalOcean控制台的App详情页,切换至「Logs」标签,查看全阶段日志,重点关注健康检查请求的状态和响应情况。
- 对比正常应用的配置细节:既然已有2个同类型应用运行正常,逐一核对以下配置:
- 启动命令(Procfile内容或平台配置的启动指令)
- 环境变量(数据库连接信息、DEBUG状态、SECRET_KEY等关键变量)
- Python版本及依赖包版本(检查requirements.txt,确认gunicorn、uvicorn、Django等版本与正常应用一致)
- 验证健康检查有效性:平台会自动执行健康检查,若应用的健康检查端点(默认是根路径
/)无法返回200状态码,会触发部署终止。本地启动应用后,访问对应端口的根路径,确认是否能正常响应;也可在平台配置中指定适配的健康检查路径。 - 检查资源配额限制:新应用可能因内存占用过高、CPU负载超出平台分配的实例配额被强制终止。查看当前App的实例规格(基础/专业型),对比正常应用的资源使用数据,必要时升级实例规格。
- 本地模拟部署流程:在本地复刻平台的启动环境,安装所有依赖,执行与平台完全相同的启动命令,观察应用是否能稳定运行,排查是否存在隐性的崩溃问题(如后台线程错误、数据库连接泄漏等)。
内容的提问来源于stack exchange,提问作者Iqra Moazzama
相关产品推荐
相关产品推荐

