P0-6: Dify超时预算切分 native/proxy 各12s(修复proxy兜底不可达,变量已注入容器)

This commit is contained in:
Simon
2026-07-18 00:28:15 +08:00
parent 54481525f4
commit a6518bff03
3 changed files with 14 additions and 2 deletions
+7
View File
@@ -114,6 +114,13 @@ class Settings(BaseSettings):
# Dify API 请求超时(秒),在网络慢时可调大 # Dify API 请求超时(秒),在网络慢时可调大
dify_timeout: int = 30 dify_timeout: int = 30
# v4.0 P0-6: Dify 双路径超时预算切分(修复 proxy 兜底不可达)
# 为什么:httpx 30s = wait_for 30snative→proxy 串行最坏 60s
# wait_for 必先触发,proxy 兜底数学上不可达。
# 预算:native 12s + proxy 12s + 开销 < 30swait_for 保持为最后防线。
dify_native_timeout: int = 12 # Dify 原生直连超时(秒)
dify_proxy_timeout: int = 12 # Dify 代理路径超时(秒)
# Dify 原生 API 配置(绕过 dify2openai 代理,直连 Dify /v1/chat-messages # Dify 原生 API 配置(绕过 dify2openai 代理,直连 Dify /v1/chat-messages
# 为什么:dify2openai 代理存在 [object Object] 序列化 bug # 为什么:dify2openai 代理存在 [object Object] 序列化 bug
# 直连 Dify 原生 API 可绕过此问题,且响应格式更简单(answer 字段直接返回内容) # 直连 Dify 原生 API 可绕过此问题,且响应格式更简单(answer 字段直接返回内容)
+4 -2
View File
@@ -72,7 +72,8 @@ class AIService:
""" """
if self._client is None or self._client.is_closed: if self._client is None or self._client.is_closed:
self._client = httpx.AsyncClient( self._client = httpx.AsyncClient(
timeout=httpx.Timeout(self.timeout), # v4.0 P0-6: proxy 路径用独立超时(12s),避免与 native 串行叠加超 wait_for(30s)
timeout=httpx.Timeout(settings.dify_proxy_timeout),
headers={ headers={
"Authorization": f"Bearer {self.api_key}", "Authorization": f"Bearer {self.api_key}",
"Content-Type": "application/json", "Content-Type": "application/json",
@@ -89,7 +90,8 @@ class AIService:
""" """
if self._native_client is None or self._native_client.is_closed: if self._native_client is None or self._native_client.is_closed:
self._native_client = httpx.AsyncClient( self._native_client = httpx.AsyncClient(
timeout=httpx.Timeout(self.timeout), # v4.0 P0-6: native 路径用独立超时(12s),预算 12+12+开销 < wait_for(30s)
timeout=httpx.Timeout(settings.dify_native_timeout),
headers={ headers={
"Authorization": f"Bearer {self.native_api_key}", "Authorization": f"Bearer {self.native_api_key}",
"Content-Type": "application/json", "Content-Type": "application/json",
+3
View File
@@ -127,6 +127,9 @@ services:
# Dify 原生直连(优先于 dify2openai 代理,修复 [object Object] bug # Dify 原生直连(优先于 dify2openai 代理,修复 [object Object] bug
- DIFY_NATIVE_BASE_URL=${DIFY_NATIVE_BASE_URL:-} - DIFY_NATIVE_BASE_URL=${DIFY_NATIVE_BASE_URL:-}
- DIFY_NATIVE_API_KEY=${DIFY_NATIVE_API_KEY:-} - DIFY_NATIVE_API_KEY=${DIFY_NATIVE_API_KEY:-}
# Dify 双路径超时预算切分(v4.0 P0-612+12 < wait_for 30s
- DIFY_NATIVE_TIMEOUT=${DIFY_NATIVE_TIMEOUT:-12}
- DIFY_PROXY_TIMEOUT=${DIFY_PROXY_TIMEOUT:-12}
# AI Wingman(留空禁用) # AI Wingman(留空禁用)
- DIFY_WINGMAN_API_URL=${DIFY_WINGMAN_API_URL:-} - DIFY_WINGMAN_API_URL=${DIFY_WINGMAN_API_URL:-}
- DIFY_WINGMAN_API_KEY=${DIFY_WINGMAN_API_KEY:-} - DIFY_WINGMAN_API_KEY=${DIFY_WINGMAN_API_KEY:-}