From fdd9deac061df1e4a4be3d71278f27b3fe7439af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=B7=E5=B0=8F=E5=89=8D?= Date: Fri, 23 Jan 2026 17:22:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0ios?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gunicorn_eventlet_config.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/gunicorn_eventlet_config.py b/gunicorn_eventlet_config.py index fa31790d..c778b1ec 100644 --- a/gunicorn_eventlet_config.py +++ b/gunicorn_eventlet_config.py @@ -139,6 +139,20 @@ def when_ready(server): print("=" * 70) +def post_fork(server, worker): + """Worker fork 后立即调用 - 修复 eventlet greendns 问题""" + # 禁用 eventlet 的 greendns,使用系统原生 DNS 解析 + try: + import eventlet + from eventlet.green import socket as green_socket + import socket as stdlib_socket + # 用标准库的 getaddrinfo 替换 eventlet 的实现 + green_socket.getaddrinfo = stdlib_socket.getaddrinfo + print(f"✅ Worker {worker.pid}: 已禁用 eventlet greendns,使用系统 DNS") + except Exception as e: + print(f"⚠️ Worker {worker.pid}: 禁用 greendns 失败: {e}") + + def post_worker_init(worker): """Worker 初始化完成后调用""" print(f"✅ Eventlet Worker {worker.pid} 已初始化 (10,000 并发连接 + 150 数据库连接就绪)")