P0-6: Dify超时预算切分 native/proxy 各12s(修复proxy兜底不可达,变量已注入容器)
This commit is contained in:
@@ -114,6 +114,13 @@ class Settings(BaseSettings):
|
||||
# Dify API 请求超时(秒),在网络慢时可调大
|
||||
dify_timeout: int = 30
|
||||
|
||||
# v4.0 P0-6: Dify 双路径超时预算切分(修复 proxy 兜底不可达)
|
||||
# 为什么:httpx 30s = wait_for 30s,native→proxy 串行最坏 60s,
|
||||
# wait_for 必先触发,proxy 兜底数学上不可达。
|
||||
# 预算:native 12s + proxy 12s + 开销 < 30s,wait_for 保持为最后防线。
|
||||
dify_native_timeout: int = 12 # Dify 原生直连超时(秒)
|
||||
dify_proxy_timeout: int = 12 # Dify 代理路径超时(秒)
|
||||
|
||||
# Dify 原生 API 配置(绕过 dify2openai 代理,直连 Dify /v1/chat-messages)
|
||||
# 为什么:dify2openai 代理存在 [object Object] 序列化 bug,
|
||||
# 直连 Dify 原生 API 可绕过此问题,且响应格式更简单(answer 字段直接返回内容)
|
||||
|
||||
@@ -72,7 +72,8 @@ class AIService:
|
||||
"""
|
||||
if self._client is None or self._client.is_closed:
|
||||
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={
|
||||
"Authorization": f"Bearer {self.api_key}",
|
||||
"Content-Type": "application/json",
|
||||
@@ -89,7 +90,8 @@ class AIService:
|
||||
"""
|
||||
if self._native_client is None or self._native_client.is_closed:
|
||||
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={
|
||||
"Authorization": f"Bearer {self.native_api_key}",
|
||||
"Content-Type": "application/json",
|
||||
|
||||
@@ -127,6 +127,9 @@ services:
|
||||
# Dify 原生直连(优先于 dify2openai 代理,修复 [object Object] bug)
|
||||
- DIFY_NATIVE_BASE_URL=${DIFY_NATIVE_BASE_URL:-}
|
||||
- DIFY_NATIVE_API_KEY=${DIFY_NATIVE_API_KEY:-}
|
||||
# Dify 双路径超时预算切分(v4.0 P0-6,12+12 < wait_for 30s)
|
||||
- DIFY_NATIVE_TIMEOUT=${DIFY_NATIVE_TIMEOUT:-12}
|
||||
- DIFY_PROXY_TIMEOUT=${DIFY_PROXY_TIMEOUT:-12}
|
||||
# AI Wingman(留空禁用)
|
||||
- DIFY_WINGMAN_API_URL=${DIFY_WINGMAN_API_URL:-}
|
||||
- DIFY_WINGMAN_API_KEY=${DIFY_WINGMAN_API_KEY:-}
|
||||
|
||||
Reference in New Issue
Block a user