vn6295337 Claude Opus 4.5 commited on
Commit
59c9b47
·
1 Parent(s): b3daac3

Add 10s delay between provider fallbacks after rate limit (429)

Browse files

When a provider returns 429 rate limit error, wait 10 seconds
before trying the next provider in the cascade. This prevents
rapid-fire requests that trigger rate limits on all providers.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

Files changed (1) hide show
  1. src/llm_client.py +13 -0
src/llm_client.py CHANGED
@@ -68,8 +68,15 @@ class LLMClient:
68
  """
69
  errors = []
70
  providers_failed = []
 
71
 
72
  for provider in self.providers:
 
 
 
 
 
 
73
  print(f"Attempting LLM call with {provider['name']}...")
74
  start_time = time.perf_counter()
75
 
@@ -91,11 +98,17 @@ class LLMClient:
91
  errors.append(f"{provider['name']}: {error}")
92
  providers_failed.append({"name": provider['name'], "error": error})
93
  print(f"Provider {provider['name']} failed: {error}")
 
 
 
94
 
95
  except Exception as e:
96
  errors.append(f"{provider['name']}: {str(e)}")
97
  providers_failed.append({"name": provider['name'], "error": str(e)})
98
  print(f"Provider {provider['name']} exception: {e}")
 
 
 
99
 
100
  return None, None, f"All LLM providers failed: {'; '.join(errors)}", providers_failed
101
 
 
68
  """
69
  errors = []
70
  providers_failed = []
71
+ last_was_rate_limited = False
72
 
73
  for provider in self.providers:
74
+ # Add delay before trying next provider if previous one was rate limited
75
+ if last_was_rate_limited:
76
+ print(f"Waiting 10s before trying {provider['name']} (rate limit cooldown)...")
77
+ time.sleep(10)
78
+ last_was_rate_limited = False
79
+
80
  print(f"Attempting LLM call with {provider['name']}...")
81
  start_time = time.perf_counter()
82
 
 
98
  errors.append(f"{provider['name']}: {error}")
99
  providers_failed.append({"name": provider['name'], "error": error})
100
  print(f"Provider {provider['name']} failed: {error}")
101
+ # Check if this was a rate limit error
102
+ if error and "429" in str(error):
103
+ last_was_rate_limited = True
104
 
105
  except Exception as e:
106
  errors.append(f"{provider['name']}: {str(e)}")
107
  providers_failed.append({"name": provider['name'], "error": str(e)})
108
  print(f"Provider {provider['name']} exception: {e}")
109
+ # Check if this was a rate limit error
110
+ if "429" in str(e):
111
+ last_was_rate_limited = True
112
 
113
  return None, None, f"All LLM providers failed: {'; '.join(errors)}", providers_failed
114