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 datetime import datetime
|
||||||
from dateutil.relativedelta import relativedelta
|
from dateutil.relativedelta import relativedelta
|
||||||
|
|
||||||
|
from .stockstats_utils import yf_retry
|
||||||
|
|
||||||
|
|
||||||
def _extract_article_data(article: dict) -> dict:
|
def _extract_article_data(article: dict) -> dict:
|
||||||
"""Extract article data from yfinance news format (handles nested 'content' structure)."""
|
"""Extract article data from yfinance news format (handles nested 'content' structure)."""
|
||||||
|
|
@ -64,7 +66,7 @@ def get_news_yfinance(
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
stock = yf.Ticker(ticker)
|
stock = yf.Ticker(ticker)
|
||||||
news = stock.get_news(count=20)
|
news = yf_retry(lambda: stock.get_news(count=20))
|
||||||
|
|
||||||
if not news:
|
if not news:
|
||||||
return f"No news found for {ticker}"
|
return f"No news found for {ticker}"
|
||||||
|
|
@ -131,11 +133,11 @@ def get_global_news_yfinance(
|
||||||
|
|
||||||
try:
|
try:
|
||||||
for query in search_queries:
|
for query in search_queries:
|
||||||
search = yf.Search(
|
search = yf_retry(lambda q=query: yf.Search(
|
||||||
query=query,
|
query=q,
|
||||||
news_count=limit,
|
news_count=limit,
|
||||||
enable_fuzzy_query=True,
|
enable_fuzzy_query=True,
|
||||||
)
|
))
|
||||||
|
|
||||||
if search.news:
|
if search.news:
|
||||||
for article in search.news:
|
for article in search.news:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue