Spaces:
Paused
Paused
Commit ·
378caa6
1
Parent(s): 25bce68
"fix_deep_stream_interrupted_and_timeout"
Browse files- app/frontend/script.js +8 -1
- app/server/chat.py +7 -1
- app/services/client.py +1 -2
- config/config.yaml +1 -1
- requirements.txt +1 -1
app/frontend/script.js
CHANGED
|
@@ -410,7 +410,14 @@ async function sendMessage() {
|
|
| 410 |
signal: signal
|
| 411 |
});
|
| 412 |
|
| 413 |
-
if (!response.ok)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 414 |
|
| 415 |
// 如果检测到画图意图,使用非流式处理
|
| 416 |
if (autoDetectDraw) {
|
|
|
|
| 410 |
signal: signal
|
| 411 |
});
|
| 412 |
|
| 413 |
+
if (!response.ok) {
|
| 414 |
+
if (response.status === 502 || response.status === 504) {
|
| 415 |
+
throw new Error('上游服务(Gemini)响应超时或连接中断,请稍后重试或更换图片。');
|
| 416 |
+
} else if (response.status === 503) {
|
| 417 |
+
throw new Error('服务器当前繁忙,请稍后重试。');
|
| 418 |
+
}
|
| 419 |
+
throw new Error(`API 请求失败: ${response.status}`);
|
| 420 |
+
}
|
| 421 |
|
| 422 |
// 如果检测到画图意图,使用非流式处理
|
| 423 |
if (autoDetectDraw) {
|
app/server/chat.py
CHANGED
|
@@ -805,7 +805,13 @@ async def _send_with_split(
|
|
| 805 |
raise e
|
| 806 |
|
| 807 |
if attempt < max_retries:
|
| 808 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 809 |
logger.warning(f"Stream failed to start (attempt {attempt+1}/{max_retries}). Retrying in {delay:.2f}s. Error: {e}")
|
| 810 |
await asyncio.sleep(delay)
|
| 811 |
else:
|
|
|
|
| 805 |
raise e
|
| 806 |
|
| 807 |
if attempt < max_retries:
|
| 808 |
+
# 如果是流中断,给予更长的冷却时间让上游恢复
|
| 809 |
+
if "interrupted" in error_str or "truncated" in error_str:
|
| 810 |
+
delay = 5.0 + random.uniform(1.0, 3.0)
|
| 811 |
+
logger.warning(f"Stream interrupted. Cooling down for {delay:.2f}s before retry...")
|
| 812 |
+
else:
|
| 813 |
+
delay = 2.0 + random.uniform(0.1, 0.5)
|
| 814 |
+
|
| 815 |
logger.warning(f"Stream failed to start (attempt {attempt+1}/{max_retries}). Retrying in {delay:.2f}s. Error: {e}")
|
| 816 |
await asyncio.sleep(delay)
|
| 817 |
else:
|
app/services/client.py
CHANGED
|
@@ -136,9 +136,8 @@ class GeminiClientWrapper(GeminiClient):
|
|
| 136 |
"auto_refresh": auto_refresh,
|
| 137 |
"refresh_interval": refresh_interval,
|
| 138 |
"verbose": verbose,
|
|
|
|
| 139 |
}
|
| 140 |
-
if watchdog_timeout is not _UNSET:
|
| 141 |
-
call_kwargs["watchdog_timeout"] = watchdog_timeout
|
| 142 |
if kwargs:
|
| 143 |
call_kwargs.update(kwargs)
|
| 144 |
|
|
|
|
| 136 |
"auto_refresh": auto_refresh,
|
| 137 |
"refresh_interval": refresh_interval,
|
| 138 |
"verbose": verbose,
|
| 139 |
+
"watchdog_timeout": 120.0 if watchdog_timeout is _UNSET else watchdog_timeout, # 增加看门狗超时
|
| 140 |
}
|
|
|
|
|
|
|
| 141 |
if kwargs:
|
| 142 |
call_kwargs.update(kwargs)
|
| 143 |
|
config/config.yaml
CHANGED
|
@@ -22,7 +22,7 @@ gemini:
|
|
| 22 |
secure_1psid: "g.a0006ghLMuTMAgxpLCPEErGijJmoYdaeoQ8jQvccH014n1gYV_A6_9K7SUzPUYqsFZYeKCFj0QACgYKAe8SARcSFQHGX2MiQREdDmeRiaB-meb6rxWh1RoVAUF8yKqKLXLomJGmcEm899BsY1K90076"
|
| 23 |
secure_1psidts: "sidts-CjEB7I_69ImkFO--6ZoqrN9V6ThAw-I__6wzxDni5ELJR7Ia4najVtYeQCmjpk01XH0yEAA"
|
| 24 |
proxy: null # Optional proxy URL (null/empty means direct connection)
|
| 25 |
-
timeout:
|
| 26 |
auto_refresh: true # Auto-refresh session cookies
|
| 27 |
refresh_interval: 3600 # Refresh interval in seconds
|
| 28 |
verbose: false # Enable verbose logging for Gemini requests
|
|
|
|
| 22 |
secure_1psid: "g.a0006ghLMuTMAgxpLCPEErGijJmoYdaeoQ8jQvccH014n1gYV_A6_9K7SUzPUYqsFZYeKCFj0QACgYKAe8SARcSFQHGX2MiQREdDmeRiaB-meb6rxWh1RoVAUF8yKqKLXLomJGmcEm899BsY1K90076"
|
| 23 |
secure_1psidts: "sidts-CjEB7I_69ImkFO--6ZoqrN9V6ThAw-I__6wzxDni5ELJR7Ia4najVtYeQCmjpk01XH0yEAA"
|
| 24 |
proxy: null # Optional proxy URL (null/empty means direct connection)
|
| 25 |
+
timeout: 300 # Init timeout in seconds (increased for stability)
|
| 26 |
auto_refresh: true # Auto-refresh session cookies
|
| 27 |
refresh_interval: 3600 # Refresh interval in seconds
|
| 28 |
verbose: false # Enable verbose logging for Gemini requests
|
requirements.txt
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
fastapi>=0.128.0
|
| 2 |
-
gemini-webapi>=1.
|
| 3 |
lmdb>=1.7.5
|
| 4 |
loguru>=0.7.3
|
| 5 |
orjson>=3.11.7
|
|
|
|
| 1 |
fastapi>=0.128.0
|
| 2 |
+
gemini-webapi>=1.20.0
|
| 3 |
lmdb>=1.7.5
|
| 4 |
loguru>=0.7.3
|
| 5 |
orjson>=3.11.7
|