update pay ui

This commit is contained in:
2025-12-11 23:13:56 +08:00
parent 9d095be968
commit d6d2b0ca94
2 changed files with 19 additions and 14 deletions

17
app.py
View File

@@ -421,21 +421,24 @@ db = SQLAlchemy(app)
mail = Mail(app)
# 初始化 Flask-SocketIO用于实时事件推送
# 自动检测可用的异步模式优先级eventlet > gevent > threading
# 支持通过环境变量指定模式: SOCKETIO_ASYNC_MODE=gevent|threading
def _detect_async_mode():
"""检测可用的异步模式"""
try:
import eventlet
return 'eventlet'
except ImportError:
pass
# 允许通过环境变量强制指定
forced_mode = os.environ.get('SOCKETIO_ASYNC_MODE', '').lower()
if forced_mode in ('gevent', 'threading', 'eventlet'):
return forced_mode
# 检测 gevent 是否已被 patchGunicorn -k gevent 会自动 patch
try:
from gevent import monkey
if monkey.is_module_patched('socket'):
return 'gevent'
except ImportError:
pass
return 'gevent' # 默认使用 geventGunicorn 会 patch
# 默认使用 threading最稳定配合 simple-websocket
return 'threading'
_async_mode = _detect_async_mode()
print(f"📡 Flask-SocketIO async_mode: {_async_mode}")

View File

@@ -23,15 +23,17 @@ import os
bind = '0.0.0.0:5001'
# Worker 进程数
# 重要: Flask-SocketIO + eventlet 使用多 worker 时需要 Redis 消息队列
# 单 worker + eventlet 可以处理数千并发连接(异步 I/O
# 多 worker 需要设置环境变量: SOCKETIO_USE_QUEUE=true
workers = 1 # 默认单 worker启用消息队列后可改为 4
# 使用 gthread多线程模式每个 worker 可启动多个线程
# 16 核心机器建议: 4 workers × 4 threads = 16 并发处理能力
workers = 4
# Worker 类型 - 使用 eventlet完整支持 WebSocket
# 每个 worker 的线程数
threads = 4
# Worker 类型 - 使用 gthread多线程配合 simple-websocket 支持 WebSocket
# 参考: https://flask-socketio.readthedocs.io/en/latest/deployment.html
# 注意: eventlet 模式下建议使用单 worker多 worker 需要 Redis 消息队列
worker_class = 'eventlet'
# gthread 是最稳定的方案,适用于 Python 3.10+
worker_class = 'gthread'
# Worker 连接数gevent 异步模式下可以处理大量并发连接)
worker_connections = 2000