bugfix
This commit is contained in:
parent
efee227cf1
commit
3fea75395b
@ -1,16 +1,16 @@
|
|||||||
import asyncio
|
import asyncio
|
||||||
from appPublic.registerfunction import RegisterFunction
|
from appPublic.registerfunction import RegisterFunction
|
||||||
|
from sqlor.dbpools import DBPools
|
||||||
from ahserver.serverenv import ServerEnv
|
from ahserver.serverenv import ServerEnv
|
||||||
# NOTE: add_cleanupctx(start_backend) 已移除。
|
from appPublic.log import debug
|
||||||
# backend_accounting 现在作为独立进程运行在 bin/backend_accounting.py 中,
|
|
||||||
# 避免多进程 sage.py worker 模式下重复启动计费循环。
|
|
||||||
from .keling import keling_token
|
from .keling import keling_token
|
||||||
from .jimeng import jimeng_auth_headers
|
from .jimeng import jimeng_auth_headers
|
||||||
from .utils import (
|
from .utils import (
|
||||||
llm_query_orders,
|
llm_query_orders,
|
||||||
read_webpath,
|
read_webpath,
|
||||||
llm_query_price,
|
llm_query_price,
|
||||||
get_llm_by_model
|
get_llm_by_model,
|
||||||
|
BufferedLLMs
|
||||||
)
|
)
|
||||||
|
|
||||||
from .llmclient import (
|
from .llmclient import (
|
||||||
@ -36,6 +36,26 @@ from .asyncinference import (
|
|||||||
get_today_asynctask_list
|
get_today_asynctask_list
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def _bind_llmage_events(dbpools, dbname):
|
||||||
|
"""Bind database events to Llmage cache invalidation handlers."""
|
||||||
|
bindings = [
|
||||||
|
# llm 表增删改:清除 LLM 配置缓存
|
||||||
|
(f'{dbname}.llm:c:after', BufferedLLMs.clear_cache),
|
||||||
|
(f'{dbname}.llm:u:after', BufferedLLMs.clear_cache),
|
||||||
|
(f'{dbname}.llm:d:after', BufferedLLMs.clear_cache),
|
||||||
|
# llmcatelog 表变更:清除缓存
|
||||||
|
(f'{dbname}.llmcatelog:c:after', BufferedLLMs.clear_cache),
|
||||||
|
(f'{dbname}.llmcatelog:u:after', BufferedLLMs.clear_cache),
|
||||||
|
(f'{dbname}.llmcatelog:d:after', BufferedLLMs.clear_cache),
|
||||||
|
# llm_catalog_rel 关联表变更:清除缓存
|
||||||
|
(f'{dbname}.llm_catalog_rel:c:after', BufferedLLMs.clear_cache),
|
||||||
|
(f'{dbname}.llm_catalog_rel:u:after', BufferedLLMs.clear_cache),
|
||||||
|
(f'{dbname}.llm_catalog_rel:d:after', BufferedLLMs.clear_cache),
|
||||||
|
]
|
||||||
|
for event_name, handler in bindings:
|
||||||
|
dbpools.bind(event_name, handler)
|
||||||
|
debug(f'Llmage event bound: {event_name}')
|
||||||
|
|
||||||
def load_llmage():
|
def load_llmage():
|
||||||
env = ServerEnv()
|
env = ServerEnv()
|
||||||
env.llm_query_orders = llm_query_orders
|
env.llm_query_orders = llm_query_orders
|
||||||
@ -59,4 +79,12 @@ def load_llmage():
|
|||||||
env.llm_query_price = llm_query_price
|
env.llm_query_price = llm_query_price
|
||||||
rf = RegisterFunction()
|
rf = RegisterFunction()
|
||||||
rf.register('jimeng_auth_headers', jimeng_auth_headers)
|
rf.register('jimeng_auth_headers', jimeng_auth_headers)
|
||||||
# add_cleanupctx(start_backend) 已移除,backend_accounting 改为独立进程
|
|
||||||
|
# Bind database events for automatic cache invalidation
|
||||||
|
dbpools = DBPools()
|
||||||
|
dbname = env.get_module_dbname('llmage')
|
||||||
|
if dbname:
|
||||||
|
_bind_llmage_events(dbpools, dbname)
|
||||||
|
debug(f'Llmage event listeners bound for database: {dbname}')
|
||||||
|
else:
|
||||||
|
debug('Llmage event listeners skipped: no database configured for llmage module')
|
||||||
|
|||||||
@ -179,6 +179,13 @@ async def get_llms_by_catelog(catelogid=None):
|
|||||||
|
|
||||||
class BufferedLLMs:
|
class BufferedLLMs:
|
||||||
llms = {}
|
llms = {}
|
||||||
|
@classmethod
|
||||||
|
def clear_cache(cls, data=None):
|
||||||
|
"""Clear all cached LLM configurations.
|
||||||
|
Called as EventDispatcher handler, so accepts optional data param.
|
||||||
|
"""
|
||||||
|
cls.llms.clear()
|
||||||
|
debug('BufferedLLMs cache cleared')
|
||||||
async def get_llm(self, llmid):
|
async def get_llm(self, llmid):
|
||||||
today = curDateString()
|
today = curDateString()
|
||||||
k = f'{llmid}.{today}'
|
k = f'{llmid}.{today}'
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user