update pay ui

This commit is contained in:
2025-12-11 23:10:58 +08:00
parent f4098a7677
commit f8fe15c09f
3 changed files with 43 additions and 24 deletions

54
app.py
View File

@@ -1,28 +1,44 @@
# ============ Gevent Monkey Patching必须放在所有 import 之前!)============
# 用于支持 Gunicorn + gevent 异步模式,使 requests 等阻塞调用变为非阻塞
# 注意:如果使用 GeventWebSocketWorkerworker 会自动 patch这里检测避免重复
# ============ Eventlet/Gevent Monkey Patching必须放在所有 import 之前!)============
# 用于支持 Gunicorn + eventlet/gevent 异步模式,使 requests 等阻塞调用变为非阻塞
import os
import sys
def _is_already_patched():
"""检测是否已经被 gevent patch"""
def _detect_async_env():
"""检测当前异步环境"""
# 检测 eventlet
try:
from gevent import monkey
return monkey.is_module_patched('socket')
except:
return False
# 只在未被 patch 且明确启用时才 patch
if os.environ.get('GEVENT_SUPPORT', 'false').lower() == 'true' and not _is_already_patched():
try:
from gevent import monkey
monkey.patch_all(thread=False, subprocess=False) # 避免 patch 某些可能有问题的模块
print("✅ Gevent monkey patching 已启用 (手动)")
import eventlet
if hasattr(eventlet, 'is_monkey_patched') and eventlet.is_monkey_patched('socket'):
return 'eventlet_patched'
return 'eventlet_available'
except ImportError:
print("⚠️ Gevent 未安装,跳过 monkey patching")
elif _is_already_patched():
pass
# 检测 gevent
try:
from gevent import monkey
if monkey.is_module_patched('socket'):
return 'gevent_patched'
return 'gevent_available'
except ImportError:
pass
return 'none'
_async_env = _detect_async_env()
# Gunicorn eventlet worker 会自动 patch这里只打印状态
if _async_env == 'eventlet_patched':
print("✅ Eventlet monkey patching 已由 Worker 启用")
elif _async_env == 'gevent_patched':
print("✅ Gevent monkey patching 已由 Worker 启用")
# ============ Gevent Monkey Patching 结束 ============
elif _async_env == 'eventlet_available':
print("📡 Eventlet 可用,等待 Gunicorn worker 初始化")
elif _async_env == 'gevent_available':
print("📡 Gevent 可用,等待 Gunicorn worker 初始化")
else:
print("⚠️ 未检测到 eventlet 或 gevent将使用 threading 模式")
# ============ Monkey Patching 检测结束 ============
import base64
import csv