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

Gunicorn部署Dash应用报OSError: [Errno 98] Address already in use求助

问题根因

你的报错OSError: [Errno 98] Address already in use是两个进程抢占8050端口导致的:

  • 当Gunicorn导入run:application时,会先执行run.py的所有顶层代码
  • 你在run.py末尾直接调用了application.run_server(),这会启动Dash内置的Flask开发服务器,直接占用8050端口
  • 之后Gunicorn尝试绑定8050端口启动服务时,发现端口已经被占用,就触发了报错

你杀宿主机的Python进程当然无效,因为端口占用是在容器内部发生的,和宿主机进程无关。

修复方案

直接修改run.py代码,把application.run_server()放在if __name__ == '__main__'判断里,这样只有直接执行run.py的时候才会启动内置开发服务器,被Gunicorn导入的时候不会执行:

from rwg_app.dash_app import create_app

application = create_app()
if __name__ == '__main__':
    application.run_server(host="0.0.0.0", port=8050)

可选优化建议

  • 你的docker-compose里已经配置了Nginx反向代理,不需要对外暴露rwg_app的8050端口,可以删掉rwg_app配置里的ports: - 8050:8050,避免直接访问绕过Nginx
  • 可以根据实际服务器配置调整Gunicorn的worker数量,通常设置为CPU核心数*2+1即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:15:05