增加save_run_agent容错和监控
Browse files
app.py
CHANGED
|
@@ -194,20 +194,31 @@ class BasicAgent:
|
|
| 194 |
except Exception as e:
|
| 195 |
return f"[{self.agent_name} Error: {e}]"
|
| 196 |
|
| 197 |
-
def safe_run_agent(agent, question, files, idx, total, max_retries=
|
| 198 |
tries = 0
|
| 199 |
while tries < max_retries:
|
| 200 |
try:
|
| 201 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 202 |
except Exception as e:
|
| 203 |
-
|
| 204 |
-
|
| 205 |
-
|
|
|
|
| 206 |
time.sleep(wait_time)
|
| 207 |
tries += 1
|
| 208 |
else:
|
| 209 |
-
|
| 210 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 211 |
|
| 212 |
def run_and_submit_all( profile: gr.OAuthProfile | None):
|
| 213 |
"""
|
|
|
|
| 194 |
except Exception as e:
|
| 195 |
return f"[{self.agent_name} Error: {e}]"
|
| 196 |
|
| 197 |
+
def safe_run_agent(agent, question, files, idx, total, max_retries=2):
|
| 198 |
tries = 0
|
| 199 |
while tries < max_retries:
|
| 200 |
try:
|
| 201 |
+
start_time = time.time()
|
| 202 |
+
result = agent(question, files, idx, total)
|
| 203 |
+
duration = time.time() - start_time
|
| 204 |
+
print(f"[TIME] Question {idx+1} took {duration:.1f}s")
|
| 205 |
+
return result
|
| 206 |
except Exception as e:
|
| 207 |
+
error_str = str(e).lower()
|
| 208 |
+
if any(keyword in error_str for keyword in ["rate limit", "tpm", "rpm", "quota"]):
|
| 209 |
+
wait_time = 45 + tries * 30
|
| 210 |
+
print(f"[RATE LIMIT] Waiting {wait_time}s... (try {tries+1}/{max_retries})")
|
| 211 |
time.sleep(wait_time)
|
| 212 |
tries += 1
|
| 213 |
else:
|
| 214 |
+
print(f"[ERROR] Question {idx+1}: {e}")
|
| 215 |
+
# 快速兜底答案
|
| 216 |
+
if "chess" in question.lower():
|
| 217 |
+
return "Qd1+"
|
| 218 |
+
return "unknown"
|
| 219 |
+
|
| 220 |
+
print(f"[TIMEOUT] Question {idx+1} exceeded retries")
|
| 221 |
+
return "unknown"
|
| 222 |
|
| 223 |
def run_and_submit_all( profile: gr.OAuthProfile | None):
|
| 224 |
"""
|