diff options
author | Danglewood <85772166+deeleeramone@users.noreply.github.com> | 2024-05-01 18:36:45 -0700 |
---|---|---|
committer | Danglewood <85772166+deeleeramone@users.noreply.github.com> | 2024-05-01 18:36:45 -0700 |
commit | 84396543d684734d3aac6ea897fd14aa935f568d (patch) | |
tree | b9320a08c6c2426ea634feb77db1a97d2bb7e087 | |
parent | a0d580ab25f91657b05acdadc47cd0999de102c7 (diff) |
try catch for RemoteDisconnect error
-rw-r--r-- | openbb_platform/providers/sec/openbb_sec/models/etf_holdings.py | 20 |
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}.") |