From aa050eaf49a5427a0a7c76ff145f2fbfceaaa2b9 Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Mon, 31 Mar 2025 14:44:36 +0300 Subject: [PATCH] fix: make parallel calls for exchages (#3073) --- lnbits/utils/exchange_rates.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lnbits/utils/exchange_rates.py b/lnbits/utils/exchange_rates.py index 4ab6e08f..0d14488c 100644 --- a/lnbits/utils/exchange_rates.py +++ b/lnbits/utils/exchange_rates.py @@ -1,3 +1,4 @@ +import asyncio from typing import Optional import httpx @@ -212,7 +213,7 @@ async def btc_rates(currency: str) -> list[tuple[str, float]]: try: headers = {"User-Agent": settings.user_agent} async with httpx.AsyncClient(headers=headers) as client: - r = await client.get(url, timeout=0.5) + r = await client.get(url, timeout=3) r.raise_for_status() if not provider.path: @@ -230,11 +231,10 @@ async def btc_rates(currency: str) -> list[tuple[str, float]]: return None - # OK to be in squence: fetch_price times out after 0.5 seconds - results = [ - await fetch_price(provider) - for provider in settings.lnbits_exchange_rate_providers + calls = [ + fetch_price(provider) for provider in settings.lnbits_exchange_rate_providers ] + results = await asyncio.gather(*calls) return [r for r in results if r is not None]