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

使用Gunicorn+Gevent部署Flask-SocketIO遇配置错误求助

解决Flask-SocketIO + Gunicorn部署WebSocket报错问题

问题根源

使用gevent作为异步模式时,Flask-SocketIO依赖gevent-websocket处理WebSocket连接,但默认的gevent Worker未启用WebSocket支持,触发配置错误。

分步解决方案

1. 确认依赖完整性

先确保所有必需包已安装:

pip install flask-socketio gevent gevent-websocket gunicorn

2. 修正Gunicorn启动命令

必须指定支持WebSocket的Worker类,替换默认的gevent Worker:

gunicorn -w 3 -k geventwebsocket.gunicorn.workers.GeventWebSocketWorker server:app

部分环境可使用简化写法:

gunicorn -w 3 -k geventwebsocket.server.GeventWebSocketServer server:app

3. 验证应用配置正确性

确保Flask-SocketIO初始化时正确设置异步模式:

from flask import Flask
from flask_socketio import SocketIO

app = Flask(__name__)
# 明确指定gevent异步模式
socketio = SocketIO(app, async_mode='gevent')

# 你的WebSocket事件、路由逻辑...

if __name__ == '__main__':
    socketio.run(app)

4. 额外注意事项

  • 多进程(-w 3)部署时,WebSocket连接会绑定到单个进程,需在反向代理(如Nginx)中配置会话粘性,否则可能出现连接异常。测试阶段可先单进程启动验证:
    gunicorn -w 1 -k geventwebsocket.gunicorn.workers.GeventWebSocketWorker server:app
    
  • 若用Nginx做反向代理,需添加WebSocket支持配置:
    location /socket.io {
        proxy_pass http://你的应用地址;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 14:17:38