perf: optimize system concurrency, I/O stability and fix WebSocket disconnects
This commit is contained in:
@@ -253,7 +253,8 @@ async def finalize_cycle(gateway: Any, date: str) -> None:
|
||||
|
||||
async def get_market_caps(gateway: Any, tickers: list[str], date: str) -> dict[str, float]:
|
||||
market_caps: dict[str, float] = {}
|
||||
for ticker in tickers:
|
||||
|
||||
async def _get_one(ticker: str):
|
||||
try:
|
||||
market_cap = None
|
||||
response = await gateway._call_trading_service(
|
||||
@@ -263,12 +264,21 @@ async def get_market_caps(gateway: Any, tickers: list[str], date: str) -> dict[s
|
||||
if response is not None:
|
||||
market_cap = response.get("market_cap")
|
||||
if market_cap is None:
|
||||
payload = trading_domain.get_market_cap_payload(ticker=ticker, end_date=date)
|
||||
payload = await asyncio.to_thread(
|
||||
trading_domain.get_market_cap_payload,
|
||||
ticker=ticker,
|
||||
end_date=date,
|
||||
)
|
||||
market_cap = payload.get("market_cap")
|
||||
market_caps[ticker] = market_cap if market_cap else 1e9
|
||||
return ticker, (market_cap if market_cap else 1e9)
|
||||
except Exception as exc:
|
||||
logger.warning("Failed to get market cap for %s, using default 1e9: %s", ticker, exc)
|
||||
market_caps[ticker] = 1e9
|
||||
return ticker, 1e9
|
||||
|
||||
tasks = [_get_one(ticker) for ticker in tickers]
|
||||
results = await asyncio.gather(*tasks)
|
||||
for ticker, mc in results:
|
||||
market_caps[ticker] = mc
|
||||
return market_caps
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user