feat: unify proxy config and centralize runtime logging
This commit is contained in:
1 parent
7af21bed6a
commit
80f2a82c19
9 files changed
+174
-43
No files matched your search
@@ -0,0 +1,53 @@
|
||||
"""统一网络代理配置工具。"""
|
||||
|
||||
import os
|
||||
from typing import Optional
|
||||
|
||||
|
||||
def get_proxy_url() -> Optional[str]:
|
||||
"""从环境变量读取代理地址,统一兼容不同变量名。"""
|
||||
use_proxy = os.getenv("USE_PROXY", "false").lower() == "true"
|
||||
if not use_proxy:
|
||||
return None
|
||||
|
||||
return (
|
||||
os.getenv("SOCKS5_PROXY")
|
||||
or os.getenv("ALL_PROXY")
|
||||
or os.getenv("HTTPS_PROXY")
|
||||
or os.getenv("HTTP_PROXY")
|
||||
)
|
||||
|
||||
|
||||
def get_send_msg_proxy_url() -> Optional[str]:
|
||||
"""读取 send_msg 独立代理,未配置时回退到全局代理。"""
|
||||
send_msg_proxy = os.getenv("SEND_MSG_PROXY")
|
||||
if send_msg_proxy:
|
||||
return send_msg_proxy
|
||||
|
||||
send_msg_proxy_port = os.getenv("SEND_MSG_PROXY_PORT")
|
||||
if send_msg_proxy_port:
|
||||
return f"socks5://127.0.0.1:{send_msg_proxy_port}"
|
||||
|
||||
return get_proxy_url()
|
||||
|
||||
|
||||
def apply_global_proxy_from_env() -> Optional[str]:
|
||||
"""将代理写入全局环境变量,确保 requests/httpx/curl 等默认走同一代理。"""
|
||||
proxy_url = get_proxy_url()
|
||||
if not proxy_url:
|
||||
return None
|
||||
|
||||
os.environ["HTTP_PROXY"] = proxy_url
|
||||
os.environ["HTTPS_PROXY"] = proxy_url
|
||||
os.environ["ALL_PROXY"] = proxy_url
|
||||
os.environ["http_proxy"] = proxy_url
|
||||
os.environ["https_proxy"] = proxy_url
|
||||
os.environ["all_proxy"] = proxy_url
|
||||
|
||||
# 保留本地直连,避免影响本机服务调用。
|
||||
if not os.getenv("NO_PROXY"):
|
||||
os.environ["NO_PROXY"] = "127.0.0.1,localhost"
|
||||
if not os.getenv("no_proxy"):
|
||||
os.environ["no_proxy"] = os.environ["NO_PROXY"]
|
||||
|
||||
return proxy_url
|
||||
Reference in new issue
Block a user