全面更换orjson
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import json
|
||||
import orjson
|
||||
import os
|
||||
|
||||
from src.common.logger import get_logger
|
||||
@@ -49,27 +49,27 @@ class LocalStoreManager:
|
||||
logger.debug(f"加载本地存储数据: {self.file_path}")
|
||||
try:
|
||||
with open(self.file_path, "r", encoding="utf-8") as f:
|
||||
self.store = json.load(f)
|
||||
self.store = orjson.loads(f.read())
|
||||
logger.info("全都记起来了!")
|
||||
except json.JSONDecodeError:
|
||||
except orjson.JSONDecodeError:
|
||||
logger.warning("啊咧?记事本被弄脏了,正在重建记事本......")
|
||||
self.store = {}
|
||||
with open(self.file_path, "w", encoding="utf-8") as f:
|
||||
json.dump({}, f, ensure_ascii=False, indent=4)
|
||||
f.write(orjson.dumps({}, option=orjson.OPT_INDENT_2).decode('utf-8'))
|
||||
logger.info("记事本重建成功!")
|
||||
else:
|
||||
# 不存在本地存储文件,创建新的目录和文件
|
||||
logger.warning("啊咧?记事本不存在,正在创建新的记事本......")
|
||||
os.makedirs(os.path.dirname(self.file_path), exist_ok=True)
|
||||
with open(self.file_path, "w", encoding="utf-8") as f:
|
||||
json.dump({}, f, ensure_ascii=False, indent=4)
|
||||
f.write(orjson.dumps({}, option=orjson.OPT_INDENT_2).decode('utf-8'))
|
||||
logger.info("记事本创建成功!")
|
||||
|
||||
def save_local_store(self):
|
||||
"""保存本地存储数据"""
|
||||
logger.debug(f"保存本地存储数据: {self.file_path}")
|
||||
with open(self.file_path, "w", encoding="utf-8") as f:
|
||||
json.dump(self.store, f, ensure_ascii=False, indent=4)
|
||||
f.write(orjson.dumps(self.store, option=orjson.OPT_INDENT_2).decode('utf-8'))
|
||||
|
||||
|
||||
local_storage = LocalStoreManager("data/local_store.json") # 全局单例化
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import json
|
||||
import orjson
|
||||
import asyncio
|
||||
import random
|
||||
from datetime import datetime, time, timedelta
|
||||
@@ -151,7 +151,7 @@ class ScheduleManager:
|
||||
logger.info(f"从数据库加载今天的日程 ({today_str})。")
|
||||
|
||||
try:
|
||||
schedule_data = json.loads(str(schedule_record.schedule_data))
|
||||
schedule_data = orjson.loads(str(schedule_record.schedule_data))
|
||||
|
||||
# 使用Pydantic验证日程数据
|
||||
if self._validate_schedule_with_pydantic(schedule_data):
|
||||
@@ -164,7 +164,7 @@ class ScheduleManager:
|
||||
else:
|
||||
logger.warning("数据库中的日程数据格式无效,将异步重新生成日程")
|
||||
await self.generate_and_save_schedule()
|
||||
except json.JSONDecodeError as e:
|
||||
except orjson.JSONDecodeError as e:
|
||||
logger.error(f"日程数据JSON解析失败: {e},将异步重新生成日程")
|
||||
await self.generate_and_save_schedule()
|
||||
else:
|
||||
@@ -282,7 +282,7 @@ class ScheduleManager:
|
||||
response, _ = await self.llm.generate_response_async(prompt)
|
||||
|
||||
# 尝试解析和验证JSON(项目内置的反截断机制会自动处理截断问题)
|
||||
schedule_data = json.loads(repair_json(response))
|
||||
schedule_data = orjson.loads(repair_json(response))
|
||||
|
||||
# 使用Pydantic验证生成的日程数据
|
||||
if self._validate_schedule_with_pydantic(schedule_data):
|
||||
@@ -293,14 +293,14 @@ class ScheduleManager:
|
||||
if existing_schedule:
|
||||
# 更新现有日程
|
||||
session.query(Schedule).filter(Schedule.date == today_str).update({
|
||||
Schedule.schedule_data: json.dumps(schedule_data),
|
||||
Schedule.schedule_data: orjson.dumps(schedule_data).decode('utf-8'),
|
||||
Schedule.updated_at: datetime.now()
|
||||
})
|
||||
else:
|
||||
# 创建新日程
|
||||
new_schedule = Schedule(
|
||||
date=today_str,
|
||||
schedule_data=json.dumps(schedule_data)
|
||||
schedule_data=orjson.dumps(schedule_data).decode('utf-8')
|
||||
)
|
||||
session.add(new_schedule)
|
||||
session.commit()
|
||||
|
||||
Reference in New Issue
Block a user