From 8159c79d55ddede9c1bf48df667baea254de315f Mon Sep 17 00:00:00 2001 From: yumoqing Date: Fri, 29 May 2026 17:59:06 +0800 Subject: [PATCH] feat: respect module_cache config for pricing cache --- pricing/pricing.py | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/pricing/pricing.py b/pricing/pricing.py index 4663c4c..bbee251 100644 --- a/pricing/pricing.py +++ b/pricing/pricing.py @@ -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)