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

Heroku部署SocketIO聊天应用出现Bad Request错误该如何解决?

解决方案
  • 修改Procfile配置:你当前使用的默认gunicorn WSGI worker不支持SocketIO的WebSocket长连接,需要替换为eventlet异步worker,将Procfile内容修改为:
web: gunicorn --worker-class eventlet -w 1 app:app

注意:这里worker数量设置为1即可,多worker部署SocketIO需要额外配置Redis等消息队列做跨进程同步,基础场景单worker足够使用

  • 升级eventlet依赖版本:你requirements.txt里的eventlet==0.17.4版本过老,和Flask-SocketIO 5.x版本存在兼容性问题,将requirements.txt中的eventlet版本修改为:
eventlet>=0.33.0
  • 调整应用内SocketIO初始化配置:在你的app.py中初始化SocketIO时需要放开跨域限制,同时启动时读取Heroku分配的端口,示例配置如下:
import os
from flask import Flask
from flask_socketio import SocketIO

app = Flask(__name__)
# 允许所有来源的跨域请求,也可指定为你的前端域名
socketio = SocketIO(app, cors_allowed_origins="*")

# 你的路由和SocketIO事件逻辑写在这里

if __name__ == '__main__':
    socketio.run(app, host='0.0.0.0', port=int(os.environ.get('PORT', 5000)))
  • 排查其他问题:如果修改后仍报错,可以在本地安装Heroku CLI后执行heroku logs --tail查看具体运行日志,定位是依赖缺失、MongoDB连接问题还是其他业务逻辑错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:18:05