改进手动搜索任务投递

This commit is contained in:
Codex
2026-07-09 00:22:34 +08:00
parent 568a1b034a
commit 9bba3fedfd
+16 -4
View File
@@ -1,8 +1,9 @@
from __future__ import annotations from __future__ import annotations
from datetime import datetime
from typing import Literal, Optional from typing import Literal, Optional
from fastapi import APIRouter, BackgroundTasks, Depends from fastapi import APIRouter, Depends, Request
from fastapi.responses import HTMLResponse from fastapi.responses import HTMLResponse
from sqlalchemy import select from sqlalchemy import select
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
@@ -45,17 +46,28 @@ def list_runs(db: Session = Depends(get_db)) -> list[AgentRun]:
@router.post("/agent/runs/daily", response_model=RunTriggerRead) @router.post("/agent/runs/daily", response_model=RunTriggerRead)
def trigger_daily_run( def trigger_daily_run(
background_tasks: BackgroundTasks, request: Request,
settings: Settings = Depends(get_settings), settings: Settings = Depends(get_settings),
db: Session = Depends(get_db), db: Session = Depends(get_db),
) -> RunTriggerRead: ) -> RunTriggerRead:
# 手动搜索复用定时任务入口,避免测试按钮和自动调度走出两套采集逻辑 # 手动搜索投递到调度器线程,避免HTTP请求承载长时间Grok搜索任务
running = db.scalar( running = db.scalar(
select(AgentRun).where(AgentRun.status == "running").order_by(AgentRun.id.desc()).limit(1) select(AgentRun).where(AgentRun.status == "running").order_by(AgentRun.id.desc()).limit(1)
) )
if running is not None: if running is not None:
return RunTriggerRead(status="running", run_id=running.id) return RunTriggerRead(status="running", run_id=running.id)
background_tasks.add_task(run_scheduled_job, settings) scheduler = getattr(request.app.state, "scheduler", None)
if scheduler is not None and scheduler.running:
scheduler.add_job(
run_scheduled_job,
trigger="date",
run_date=datetime.now(),
args=[settings],
id=f"manual-intelligence-{datetime.now().timestamp()}",
max_instances=1,
)
return RunTriggerRead(status="started")
run_scheduled_job(settings)
return RunTriggerRead(status="started") return RunTriggerRead(status="started")