首页
关于
视频
友链
Search
1
解决Windows 11安卓子系统提示“请确保在 BIOS 中启用了虚拟化,并且为你的电脑启用了虚拟机平台”的问题。
584 阅读
2
影视APP
499 阅读
3
小米手机解锁Bootloader(Xiaomi手机解BL锁)
385 阅读
4
洛雪音乐安卓+PC【含音源】
306 阅读
5
验证亚马逊广告来自哪个广告组
290 阅读
资源分享
Windows资源
Andorid资源
电视APP
学习记录
Linux
Python
Qt
教程
Windows教程
安卓手机
其他
登录
Search
标签搜索
小米手机
Linux
CentOS
windows
win11
安卓子系统
影视App
蜂蜜影视
tvbox
影视源
Python
Django
Django命令
亚马逊
亚马逊广告
洛雪音乐
洛雪音乐助手安卓
洛雪音乐助手PC
Magisk
安卓手机
Godbei
累计撰写
11
篇文章
累计收到
20
条评论
首页
栏目
资源分享
Windows资源
Andorid资源
电视APP
学习记录
Linux
Python
Qt
教程
Windows教程
安卓手机
其他
页面
关于
视频
友链
搜索到
1
篇与
的结果
2024-12-03
Flask + flask-socketio + uWSGI + Nginx 配置
前言我和我妹最近在玩猜人物的游戏, 一个人通过提问来猜, 另一个人回答是或不是, 然后心血来潮地想写成个网页游戏, 哈哈哈, 然后开始自学flask-socketio, 在windows电脑上测试的时候没什么问题, 但想要在不同的地方一起玩, 还是得部署到服务器上. 在部署到服务器上的时候, 毕竟是兴趣爱好, 自学的, 也没人教. 各种问题, 搞得我头都大了, 但还好最后还是搞定了(应该是吧?).现在来记录一下是怎么配置的, 以防忘记.开发环境Flask == 3.1.0flask-socketio == 5.4.1uWSGI == 2.0.28Nginx == 1.22.1gevent == 24.11.1配置记录Flask后端简单示例代码使用gevent_uwsgi 作为异步模式socketio = SocketIO(app, async_mode='gevent_uwsgi')from flask import Flask, request from flask_socketio import SocketIO, emit, Namespace app = Flask(__name__) app.config['SECRET_KEY'] = 'secret!' # 使用gevent, 配置async_mode为"gevent_uwsgi", 需要安装"gevent"库 socketio = SocketIO(app, async_mode='gevent_uwsgi') # 允许跨域 socketio.init_app(app, cors_allowed_origin='*') class MyCustomNamespace(Namespace): def on_connect(self): # 连接时 print("连接了") self.emit("message", {"msg": str(request.sid) + "连接"}) def on_disconnect(self): # 创建断开连接时 print("关闭连接") self.emit("message", {"msg": str(request.sid) + "连接已关闭!"}) def on_message(self, data): # 收到消息时 print("收到消息: ", data) self.emit("message", {"msg": str(request.sid) + "收到消息!"}) socketio.on_namespace(MyCustomNamespace('/test')) if __name__ == '__main__': socketio.run(app, host="0.0.0.0", port=12306) uWSGI配置uwsgi.ini使用http, 而不是sockethttp-websockets = true 启用 WebSockets 支持gevent = 1000 使用 gevent 来处理并发请求,并且允许最多 1000 个协程同时运行。[uwsgi] #项目目录 chdir=xxx #指定项目application wsgi-file=./app.py #python 程序内用以启动的application 变量名 callable=app # 进程个数 processes=1 # 线程个数 threads=2 #指定启动时的pid文件路径(用于停止服务和重启服务,请勿删除) pidfile=./uwsgi.pid # 指定ip及端口 http= :12306 # 要用http模式 #socket= :12306 #启动uwsgi的用户名和用户组 uid=www gid=www #启用主进程 master=true # 设置缓冲区大小 buffer-size = 32768 # 后台运行,并输出日志 daemonize = ./uwsgi.log # 设置http-websockets为true http-websockets = true # 使用 gevent 来处理并发请求,并且允许最多 1000 个协程同时运行。 gevent = 1000Nginx配置主要加一个 location /socket.io/location /socket.io/表示nginx会匹配所有以/socket.io/开头的请求 URI。例如,像/socket.io/?EIO=3&transport=polling这样的请求就会被这个location块所匹配。处理Socket.io相关请求:当nginx接收到匹配/socket.io/路径的请求时,它会按照这个location块中的配置规则来处理这些请求。location /socket.io/ { 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:12306/socket.io/; proxy_http_version 1.1; proxy_buffering off; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; }
2024年12月03日
8 阅读
0 评论
0 点赞