feat: respect module_cache config for pricing cache

This commit is contained in:
yumoqing 2026-05-29 17:59:06 +08:00
parent c041c76c9f
commit 8159c79d55

View File

@ -6,9 +6,22 @@ from sqlor.dbpools import DBPools, get_sor_context
from appPublic.log import debug, exception, info, MyLogger
from appPublic.timeUtils import curDateString
from appPublic.dictObject import DictObject
from appPublic.jsonConfig import getConfig
from .write_pattern import write_pattern_xlsx, load_xlsx_pricing
import yaml
def _cache_enabled():
"""Check if cache is enabled for pricing module in config.json"""
try:
config = getConfig()
module_cache = config.module_cache
if module_cache is None:
return True
return getattr(module_cache, 'pricing', True)
except Exception:
return True
"""
采用yaml描述定价策略
在pricing_program的pricing_spec表中定义定价的数据字段
@ -424,9 +437,10 @@ class PricingProgram:
async def get_ppid_pricing(ppid):
dat = curDateString()
k = f'{ppid}.{dat}'
d = PricingProgram.pricing_data.get(k)
if d:
return d
if _cache_enabled():
d = PricingProgram.pricing_data.get(k)
if d:
return d
env = ServerEnv()
async with get_sor_context(env, 'pricing') as sor:
sql = """select a.name, a.ownerid, a.providerid,
@ -445,7 +459,8 @@ class PricingProgram:
e = Exception(f'{ppid=},{dat=} data not found')
exception(f'{e}')
raise e
d = recs[0]
d = recs[0]
if _cache_enabled():
PricingProgram.pricing_data[k] = d
dates = PricingProgram.pricing_data.get(ppid, [])
dates.append(dat)
@ -456,7 +471,7 @@ class PricingProgram:
PricingProgram.pricing_data[dk]
dates = dates[-2:]
PricingProgram.pricing_data[ppid] = dates
return d
return d
async def buffered_charging(ppid, data):
r = await PricingProgram.get_ppid_pricing(ppid)