summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanglewood <85772166+deeleeramone@users.noreply.github.com>2024-05-01 18:36:45 -0700
committerDanglewood <85772166+deeleeramone@users.noreply.github.com>2024-05-01 18:36:45 -0700
commit84396543d684734d3aac6ea897fd14aa935f568d (patch)
treeb9320a08c6c2426ea634feb77db1a97d2bb7e087
parenta0d580ab25f91657b05acdadc47cd0999de102c7 (diff)
try catch for RemoteDisconnect error
-rw-r--r--openbb_platform/providers/sec/openbb_sec/models/etf_holdings.py20
1 files changed, 17 insertions, 3 deletions
diff --git a/openbb_platform/providers/sec/openbb_sec/models/etf_holdings.py b/openbb_platform/providers/sec/openbb_sec/models/etf_holdings.py
index 15695e7f02b..e5ac44c6943 100644
--- a/openbb_platform/providers/sec/openbb_sec/models/etf_holdings.py
+++ b/openbb_platform/providers/sec/openbb_sec/models/etf_holdings.py
@@ -2,6 +2,7 @@
# pylint: disable =[unused-argument,too-many-locals,too-many-branches]
+import asyncio
from datetime import date as dateType
from typing import Any, Dict, List, Optional, Union
from warnings import warn
@@ -329,9 +330,22 @@ class SecEtfHoldingsFetcher(
**kwargs: Any,
) -> Dict:
"""Return the raw data from the SEC endpoint."""
- filings = await get_nport_candidates(
- symbol=query.symbol, use_cache=query.use_cache
- )
+ # Implement a retry mechanism in case of RemoteDiconnected Error.
+ retries = 3
+ for i in range(retries):
+ filings = []
+ try:
+ filings = await get_nport_candidates(
+ symbol=query.symbol, use_cache=query.use_cache
+ )
+ if filings:
+ break
+ except Exception as e:
+ if i < retries - 1:
+ warn(f"Error: {e}. Retrying...")
+ asyncio.sleep(1)
+ continue
+ raise e
filing_candidates = pd.DataFrame.from_records(filings)
if filing_candidates.empty:
raise ValueError(f"No N-Port records found for {query.symbol}.")