update pay ui
This commit is contained in:
54
app.py
54
app.py
@@ -1,28 +1,44 @@
|
||||
# ============ Gevent Monkey Patching(必须放在所有 import 之前!)============
|
||||
# 用于支持 Gunicorn + gevent 异步模式,使 requests 等阻塞调用变为非阻塞
|
||||
# 注意:如果使用 GeventWebSocketWorker,worker 会自动 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
|
||||
|
||||
Reference in New Issue
Block a user