From 56e980f19daa828649aa95ace7b437468aba17d2 Mon Sep 17 00:00:00 2001 From: zzlgreat Date: Thu, 11 Dec 2025 21:28:57 +0800 Subject: [PATCH] update pay ui --- app.py | 13 ++++++++++++- gunicorn_app_config.py | 20 ++++++++++++-------- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/app.py b/app.py index dabc30a9..db5cddb2 100755 --- a/app.py +++ b/app.py @@ -1,7 +1,18 @@ +# ============ Gevent Monkey Patching(必须放在所有 import 之前!)============ +# 用于支持 Gunicorn + gevent 异步模式,使 requests 等阻塞调用变为非阻塞 +import os +if os.environ.get('GEVENT_SUPPORT', 'true').lower() == 'true': + try: + from gevent import monkey + monkey.patch_all() + print("✅ Gevent monkey patching 已启用") + except ImportError: + print("⚠️ Gevent 未安装,跳过 monkey patching") +# ============ Gevent Monkey Patching 结束 ============ + import base64 import csv import io -import os import time import urllib import uuid diff --git a/gunicorn_app_config.py b/gunicorn_app_config.py index cbe925d6..b108aab7 100644 --- a/gunicorn_app_config.py +++ b/gunicorn_app_config.py @@ -3,12 +3,14 @@ Gunicorn 配置文件 - app.py 生产环境配置(支持 Flask-SocketIO) 使用方式: - # 推荐方式: 使用 geventwebsocket 支持 WebSocket + 高并发 + # 方式1: 推荐 - 使用 geventwebsocket 支持 WebSocket + 高并发 gunicorn -c gunicorn_app_config.py app:app - # 或者使用 eventlet(如果 gevent 有问题) - pip install eventlet - gunicorn -c gunicorn_app_config.py -k eventlet app:app + # 方式2: 如果方式1有问题,使用纯 gevent(无 WebSocket) + gunicorn -c gunicorn_app_config.py -k gevent app:app + + # 方式3: 最简单的多进程模式(不支持 WebSocket,但最稳定) + gunicorn -w 4 -b 0.0.0.0:5001 --timeout 120 app:app """ import os @@ -18,18 +20,20 @@ import os # 绑定地址和端口 bind = '0.0.0.0:5001' -# Worker 进程数(Flask-SocketIO 使用异步 worker,不需要太多) -workers = 1 # geventwebsocket 要求单 worker +# Worker 进程数 +# 注意:geventwebsocket 要求单 worker,如果用多 worker 需要用 sync 或 gevent +workers = 1 # Worker 类型 - 使用 geventwebsocket 支持 WebSocket +# 如果遇到问题,可以命令行添加 -k gevent 覆盖此设置 worker_class = 'geventwebsocket.gunicorn.workers.GeventWebSocketWorker' # Worker 连接数(gevent 异步模式下可以处理大量并发连接) worker_connections = 1000 # 每个 worker 处理的最大请求数,超过后重启(防止内存泄漏) -max_requests = 10000 -max_requests_jitter = 1000 +max_requests = 5000 +max_requests_jitter = 500 # ==================== 超时配置 ====================