diff --git a/backend/open_webui/retrieval/web/brave.py b/backend/open_webui/retrieval/web/brave.py index e047602b36..49c8a88e81 100644 --- a/backend/open_webui/retrieval/web/brave.py +++ b/backend/open_webui/retrieval/web/brave.py @@ -1,4 +1,5 @@ import logging +import time from typing import Optional import requests @@ -25,6 +26,14 @@ def search_brave( params = {"q": query, "count": count} response = requests.get(url, headers=headers, params=params) + + # Handle 429 rate limiting - Brave free tier allows 1 request/second + # If rate limited, wait 1 second and retry once before failing + if response.status_code == 429: + log.info("Brave Search API rate limited (429), retrying after 1 second...") + time.sleep(1) + response = requests.get(url, headers=headers, params=params) + response.raise_for_status() json_response = response.json()