refactor: migrate pricing_data to share_cache Redis

This commit is contained in:
yumoqing 2026-07-29 17:16:25 +08:00
parent e3909fef53
commit 3483d16c58

View File

@ -189,14 +189,15 @@ def data_mapping(ns, name, v):
return v
class PricingProgram:
pricing_data = {}
pass # pricing_data moved to Redis share_cache
@staticmethod
def on_hot_reload(data=None):
"""Event handler for hot_reload event. Clears pricing cache."""
from appPublic.log import debug
debug(f'[pricing] on_hot_reload called, clearing pricing_data (data={data})')
PricingProgram.pricing_data.clear()
from appPublic.share_cache import cache_invalidate
await cache_invalidate('pricing')
@staticmethod
async def get_pricing_program(ppid):
@ -431,10 +432,9 @@ class PricingProgram:
async def get_ppid_pricing(ppid):
dat = curDateString()
k = f'{ppid}.{dat}'
if _cache_enabled():
d = PricingProgram.pricing_data.get(k)
if d:
return d
d = await cache_get('pricing', k, ttl=300)
if d:
return d
env = ServerEnv()
async with get_sor_context(env, 'pricing') as sor:
sql = """select a.name, a.ownerid, a.providerid, a.currency,
@ -454,17 +454,8 @@ class PricingProgram:
exception(f'{e}')
raise e
d = recs[0]
if _cache_enabled():
PricingProgram.pricing_data[k] = d
dates = PricingProgram.pricing_data.get(ppid, [])
dates.append(dat)
dates_cnt = len(dates)
if dates_cnt > 2:
for i in range(dates_cnt - 2):
dk = f'{ppid}.{dates[i]}'
PricingProgram.pricing_data[dk]
dates = dates[-2:]
PricingProgram.pricing_data[ppid] = dates
from appPublic.share_cache import cache_set
await cache_set('pricing', k, d, ttl=300)
return d
async def buffered_charging(ppid, data):