feat: stabilize multi-region runtime sync and worker orchestration

This commit is contained in:
root
2026-04-27 15:48:12 +08:00
parent 7cbde2aa78
commit 215a364891
137 changed files with 31931 additions and 1943 deletions

View File

@@ -11,6 +11,7 @@
import json
import os
import threading
from collections import OrderedDict
from datetime import datetime, timezone, timedelta # 日期时间处理,用于时区转换
from typing import Optional
@@ -22,10 +23,24 @@ _DIRECT_HTTP = requests.Session()
_DIRECT_HTTP.trust_env = False
_DIRECT_HTTP.mount("http://", requests.adapters.HTTPAdapter(pool_connections=256, pool_maxsize=512, max_retries=0))
_DIRECT_HTTP.mount("https://", requests.adapters.HTTPAdapter(pool_connections=256, pool_maxsize=512, max_retries=0))
_PROXY_MANAGERS = {}
_PROXY_MANAGERS = OrderedDict()
_PROXY_MANAGER_LOCK = threading.Lock()
def _proxy_manager_cache_limit() -> int:
try:
return max(1, int(os.getenv("DOMAINCHECK_REGISTER_PROXY_SESSION_CACHE_SIZE", "128") or 128))
except Exception:
return 128
def _close_session_quietly(session) -> None:
try:
session.close()
except Exception:
pass
def _get_http_manager(proxies: Optional[dict] = None):
proxy_url = ""
if proxies:
@@ -34,12 +49,17 @@ def _get_http_manager(proxies: Optional[dict] = None):
return _DIRECT_HTTP
with _PROXY_MANAGER_LOCK:
manager = _PROXY_MANAGERS.get(proxy_url)
if manager is None:
manager = requests.Session()
manager.trust_env = False
manager.mount("http://", requests.adapters.HTTPAdapter(pool_connections=128, pool_maxsize=256, max_retries=0))
manager.mount("https://", requests.adapters.HTTPAdapter(pool_connections=128, pool_maxsize=256, max_retries=0))
_PROXY_MANAGERS[proxy_url] = manager
if manager is not None:
_PROXY_MANAGERS.move_to_end(proxy_url)
return manager
manager = requests.Session()
manager.trust_env = False
manager.mount("http://", requests.adapters.HTTPAdapter(pool_connections=128, pool_maxsize=256, max_retries=0))
manager.mount("https://", requests.adapters.HTTPAdapter(pool_connections=128, pool_maxsize=256, max_retries=0))
_PROXY_MANAGERS[proxy_url] = manager
while len(_PROXY_MANAGERS) > _proxy_manager_cache_limit():
_, stale_manager = _PROXY_MANAGERS.popitem(last=False)
_close_session_quietly(stale_manager)
return manager