Reduce exchange rate refresh to twice daily
Be respectful of the free Frankfurter API — ECB rates only update once a day anyway, so a 12-hour cache TTL is more than sufficient. https://claude.ai/code/session_01LPpSZFfyh6vdV5HGFWjoQX
This commit is contained in:
@@ -49,4 +49,4 @@ All configuration is via environment variables (see `.env.example`):
|
|||||||
- **Deduplication**: deals are tracked by game ID + timestamp; duplicates are never reposted
|
- **Deduplication**: deals are tracked by game ID + timestamp; duplicates are never reposted
|
||||||
- **Pruning**: deals older than 30 days are pruned from the database so they can be reposted if they return
|
- **Pruning**: deals older than 30 days are pruned from the database so they can be reposted if they return
|
||||||
- **One message per deal**: each deal is posted individually so messages are independently linkable and dismissible
|
- **One message per deal**: each deal is posted individually so messages are independently linkable and dismissible
|
||||||
- **Multi-currency pricing**: deal prices are shown in USD, CAD, EUR, and GBP using live exchange rates from the [Frankfurter API](https://api.frankfurter.dev) (ECB data, no API key required). Rates are cached and refreshed hourly.
|
- **Multi-currency pricing**: deal prices are shown in USD, CAD, EUR, and GBP using live exchange rates from the [Frankfurter API](https://api.frankfurter.dev) (ECB data, no API key required). Rates are cached and refreshed twice daily.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
"""Currency conversion using the Frankfurter API (ECB rates, no API key required).
|
"""Currency conversion using the Frankfurter API (ECB rates, no API key required).
|
||||||
|
|
||||||
Rates are cached in memory and refreshed at most once per hour.
|
Rates are cached in memory and refreshed at most twice per day.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
@@ -12,7 +12,7 @@ logger = logging.getLogger(__name__)
|
|||||||
|
|
||||||
FRANKFURTER_URL = "https://api.frankfurter.dev/v1/latest"
|
FRANKFURTER_URL = "https://api.frankfurter.dev/v1/latest"
|
||||||
TARGET_CURRENCIES = ("CAD", "EUR", "GBP")
|
TARGET_CURRENCIES = ("CAD", "EUR", "GBP")
|
||||||
CACHE_TTL_SECONDS = 3600 # 1 hour
|
CACHE_TTL_SECONDS = 43200 # 12 hours — be nice to the free service
|
||||||
|
|
||||||
# Module-level cache
|
# Module-level cache
|
||||||
_rates: dict[str, float] = {}
|
_rates: dict[str, float] = {}
|
||||||
|
|||||||
Reference in New Issue
Block a user