美文网首页
Flask+uwsgi+socket-io配置指南

Flask+uwsgi+socket-io配置指南

作者: SystemLight | 来源:发表于2021-07-30 13:30 被阅读0次

注意事项:

  1. uwsgi一定不要启用多个进程,不然socketIO协商会错误,通过NGINX的负载均衡来代替
  2. SocketIO中配置跨域选项,防止协商错误
  3. uwsgi使用http模式,socket模式无法让NGINX代理websocket
  4. 服务端开发时可以使用socketio.run()启动服务器,同时建议通过gevent的实现方式

依赖模块(推荐通过pipenv做环境管理):

  • flask
  • flask-socketio
  • gevent
  • gevent-websocket

app.py

from flask import Flask
from flask_socketio import SocketIO

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app, cors_allowed_origins="*")


@socketio.on('message')
def handle_message(data):
    print('received message: ' + data)


@socketio.on('my event')
def handle_my_custom_event(json):
    print('received json: ' + str(json))


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

uwsgi.ini配置文件

[uwsgi]
master = True
socket = 127.0.0.1:5555
chmod-socket = 666
project = t-flask
home = ./.venv  # 由于我使用的是pipenv做环境管理,同时启用将依赖安装在项目目录,所以需要配置这个环境选项
chdir = .
module = wsgi
callable = app
processes = 1
max-requests = 5000
pidfile = ./uwsgi.pid
daemonize = ./%(project).log
vacuum = True

nginx配置

 location / {
        proxy_cookie_domain domino_server nginx_server;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:5000;
    }
    
    location /socket.io/ {
        proxy_pass http://127.0.0.1:5000/socket.io/;
 
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
    }

相关文章

网友评论

      本文标题:Flask+uwsgi+socket-io配置指南

      本文链接:https://www.haomeiwen.com/subject/hgoqvltx.html