fix(openai): fail fast on unrecoverable RateLimitError codes (#901) (#904) (#925)

Co-authored-by: Sahil Yadav <sahilyadav.sy2004@gmail.com>
This commit is contained in:
cybermaggedon 2026-05-15 13:32:30 +01:00 committed by GitHub
parent 01b1fd849d
commit 58b5c5c8d5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -104,7 +104,15 @@ class Processor(LlmService):
return resp return resp
except RateLimitError: except RateLimitError as e:
try:
body = getattr(e, 'body', {})
if isinstance(body, dict):
code = body.get('error', {}).get('code')
if code in ('insufficient_quota', 'invalid_api_key', 'account_deactivated'):
raise RuntimeError(f"OpenAI unrecoverable error: {code} - {body['error'].get('message', '')}")
except Exception:
pass
# Leave rate limit retries to the base handler # Leave rate limit retries to the base handler
raise TooManyRequests() raise TooManyRequests()
@ -188,7 +196,16 @@ class Processor(LlmService):
logger.debug("Streaming complete") logger.debug("Streaming complete")
except RateLimitError: except RateLimitError as e:
try:
body = getattr(e, 'body', {})
if isinstance(body, dict):
code = body.get('error', {}).get('code')
if code in ('insufficient_quota', 'invalid_api_key', 'account_deactivated'):
logger.warning(f"Hit unrecoverable rate limit error during streaming: {code}")
raise RuntimeError(f"OpenAI unrecoverable error: {code} - {body['error'].get('message', '')}")
except Exception:
pass
logger.warning("Hit rate limit during streaming") logger.warning("Hit rate limit during streaming")
raise TooManyRequests() raise TooManyRequests()