循环冲突解决

This commit is contained in:
qinyong@9artedu.com 2026-06-24 09:57:23 +08:00
parent 7ecafd2fbf
commit 927ffb896e
5 changed files with 49 additions and 40 deletions

View File

@ -1,10 +1,14 @@
from contextlib import asynccontextmanager
from datetime import datetime, timedelta
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from fastapi import FastAPI
from app.client.embedding_client_manager import embedding_client
from app.client.milvus_client_manager import milvus_client
from app.client.mysql_client_manager import db_assistant_mysql_client_manager
from app.core.log import logger
from app.summary.service import build
"""
生命周期
@ -12,12 +16,39 @@ from app.client.mysql_client_manager import db_assistant_mysql_client_manager
yield
容器停止时执行
"""
scheduler = AsyncIOScheduler(timezone='Asia/Shanghai')
async def generate_daily_summary():
yesterday = datetime.now() - timedelta(days=1)
date = datetime(yesterday.year, yesterday.month, yesterday.day)
# 按 年-月-日 无补零格式输出
date_format = f"{date.year}-{date.month}-{date.day}"
#date_format = "2026-06-23"
await build(date_format)
logger.info(f"{date_format} 消息摘要生成完成")
@asynccontextmanager
async def lifespan(app: FastAPI):
db_assistant_mysql_client_manager.init()
embedding_client.init()
milvus_client.init()
scheduler.add_job(
generate_daily_summary,
trigger='cron',
hour=9,
minute=40,
second=0,
id='daily_summary',
name='每日消息摘要任务',
replace_existing=True
)
scheduler.start()
logger.info("定时任务调度器已开启")
yield
await db_assistant_mysql_client_manager.close()
await embedding_client.close()
milvus_client.close()
milvus_client.close()
scheduler.shutdown()
logger.info("定时任务调度器已关闭")

View File

@ -35,8 +35,8 @@ class ArchiveMessagesRepository:
if end_date:
conditions.append(" msgtime <= :end_date")
params["end_date"] = end_date
#base_query += " WHERE 1=1 and roomid='' and msgtype='text' "
base_query += " WHERE (from_user='BuShouShiJinBuGaiMing') and roomid='' and msgtype='text' "
base_query += " WHERE 1=1 and roomid='' and msgtype='text' "
#base_query += " WHERE (from_user='BuShouShiJinBuGaiMing') and roomid='' and msgtype='text' "
if conditions:
base_query += " AND ".join(conditions)+" "
base_query += " GROUP BY DATE(FROM_UNIXTIME(msgtime / 1000)), from_user ORDER BY created_at DESC, from_user;"

View File

@ -216,8 +216,8 @@ async def build(day:str):
if __name__ == '__main__':
#
start = datetime(2026, 6, 17)
end = datetime(2026, 6, 17)
start = datetime(2026, 6, 23)
end = datetime(2026, 6, 23)
result = []
temp = start

View File

@ -10,42 +10,18 @@ from app.summary.service import build
from app.core.log import logger
app = FastAPI(lifespan=lifespan)
scheduler = AsyncIOScheduler(timezone='Asia/Shanghai')
app.include_router(query_qa_router)
async def generate_daily_summary(date: Optional[str] = None):
if not date:
yesterday = datetime.now() - timedelta(days=1)
#date = yesterday.strftime("%Y-%-m-%-d") # 格式: 2026-6-15
date = datetime(yesterday.year, yesterday.month, yesterday.day)
# 按 年-月-日 无补零格式输出
date_format = f"{date.year}-{date.month}-{date.day}"
await build(date_format)
logger.info(f"{date} 消息摘要生成完成")
@app.on_event("startup")
async def startup_event():
scheduler.add_job(
generate_daily_summary,
trigger='cron',
hour=2,
minute=0,
second=0,
id='daily_summary',
name='每日消息摘要任务',
replace_existing=True
)
scheduler.start()
logger.info("定时任务调度器已启动每天凌晨2:00自动执行消息摘要任务")
@app.on_event("shutdown")
async def shutdown_event():
scheduler.shutdown()
logger.info("定时任务调度器已关闭")
# @app.on_event("startup")
# async def startup_event():
#
# logger.info("定时任务调度器已启动每天凌晨2:00自动执行消息摘要任务")
#
#
# @app.on_event("shutdown")
# async def shutdown_event():
# scheduler.shutdown()
# logger.info("定时任务调度器已关闭")
if __name__ == '__main__':

4
readme
View File

@ -1,5 +1,7 @@
启动nohup uvicorn app.uvicorn_main:app --host 0.0.0.0 --port 8000 --workers 4 > uvicorn.log 2>&1 &
启动nohup uvicorn app.uvicorn_main:app --host 0.0.0.0 --port 8000 --workers 1 > uvicorn.log 2>&1 &
打包py package.py
同步库+虚拟环境uv sync
优化后续将workers 1--》workers 4 在定时任务加redis分布式