fix: add yf_retry to yfinance_news.py to handle rate limits
The yfinance_news module was missing the yf_retry exponential backoff wrapper that y_finance.py and stockstats_utils.py already use. When Yahoo Finance returns HTTP 429 (Too Many Requests), get_news_yfinance and get_global_news_yfinance would fail immediately instead of retrying. This adds yf_retry around: - stock.get_news() in get_news_yfinance() - yf.Search() in get_global_news_yfinance() Fixes #437
This commit is contained in:
parent
589b351f2a
commit
1a8ec533c0
|
|
@ -4,6 +4,8 @@ import yfinance as yf
|
|||
from datetime import datetime
|
||||
from dateutil.relativedelta import relativedelta
|
||||
|
||||
from .stockstats_utils import yf_retry
|
||||
|
||||
|
||||
def _extract_article_data(article: dict) -> dict:
|
||||
"""Extract article data from yfinance news format (handles nested 'content' structure)."""
|
||||
|
|
@ -64,7 +66,7 @@ def get_news_yfinance(
|
|||
"""
|
||||
try:
|
||||
stock = yf.Ticker(ticker)
|
||||
news = stock.get_news(count=20)
|
||||
news = yf_retry(lambda: stock.get_news(count=20))
|
||||
|
||||
if not news:
|
||||
return f"No news found for {ticker}"
|
||||
|
|
@ -131,11 +133,11 @@ def get_global_news_yfinance(
|
|||
|
||||
try:
|
||||
for query in search_queries:
|
||||
search = yf.Search(
|
||||
query=query,
|
||||
search = yf_retry(lambda q=query: yf.Search(
|
||||
query=q,
|
||||
news_count=limit,
|
||||
enable_fuzzy_query=True,
|
||||
)
|
||||
))
|
||||
|
||||
if search.news:
|
||||
for article in search.news:
|
||||
|
|
|
|||
Loading…
Reference in New Issue