"""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