dy-dashboard/services/spot_sales_cache.py
2026-10-28 11:14:17 +08:00

28 lines
927 B
Python

"""Short-lived, cross-worker sales snapshots invalidated by imports and product edits."""
import hashlib
from datetime import date
from services import simple_cache
from services.cache import _data_version_signature
def sales_snapshot(products, build):
version = _data_version_signature()
fingerprint = hashlib.sha256(repr(products).encode('utf-8')).hexdigest()
token = (version, fingerprint, date.today())
key = 'spot-sales-snapshot-v3'
try:
entry = simple_cache.get(key)
except OSError:
entry = None
if entry is not None and entry['token'] == token:
return entry['result']
result = build(products)
# Never publish an old snapshot under a newly imported data version.
if _data_version_signature() == version:
try:
simple_cache.set(key, {'token': token, 'result': result}, ttl=60)
except OSError:
pass
return result