From 9bba3fedfda879a04b7a728c6d6c46ed1c49747b Mon Sep 17 00:00:00 2001 From: Codex Date: Thu, 9 Jul 2026 00:22:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9B=E6=89=8B=E5=8A=A8=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E4=BB=BB=E5=8A=A1=E6=8A=95=E9=80=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/routes.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/app/api/routes.py b/app/api/routes.py index e27674d..d6709dd 100644 --- a/app/api/routes.py +++ b/app/api/routes.py @@ -1,8 +1,9 @@ from __future__ import annotations +from datetime import datetime from typing import Literal, Optional -from fastapi import APIRouter, BackgroundTasks, Depends +from fastapi import APIRouter, Depends, Request from fastapi.responses import HTMLResponse from sqlalchemy import select 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) def trigger_daily_run( - background_tasks: BackgroundTasks, + request: Request, settings: Settings = Depends(get_settings), db: Session = Depends(get_db), ) -> RunTriggerRead: - # 手动搜索复用定时任务入口,避免测试按钮和自动调度走出两套采集逻辑。 + # 手动搜索投递到调度器线程,避免HTTP请求承载长时间Grok搜索任务。 running = db.scalar( select(AgentRun).where(AgentRun.status == "running").order_by(AgentRun.id.desc()).limit(1) ) if running is not None: 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")