feat: 实现 Agent 定时任务系统 — 按 cron 表达式周期执行 Agent

- 新增 AgentSchedule 模型、CRUD API、调度服务
- 集成 Celery Beat 每分钟检查到期任务并自动触发执行
- 支持手动触发、cron 表达式解析、执行状态跟踪
- 依赖: croniter (cron 表达式解析)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
renjianbo
2026-05-02 12:14:37 +08:00
parent e3802eff60
commit 0bbf68d5bb
8 changed files with 408 additions and 3 deletions

View File

@@ -2,13 +2,18 @@
Celery 应用配置
"""
from celery import Celery
from celery.schedules import crontab
from app.core.config import settings
celery_app = Celery(
"aiagent",
broker=settings.REDIS_URL,
backend=settings.REDIS_URL,
include=["app.tasks.workflow_tasks", "app.tasks.agent_tasks"]
include=[
"app.tasks.workflow_tasks",
"app.tasks.agent_tasks",
"app.tasks.scheduler_tasks",
]
)
celery_app.conf.update(
@@ -21,3 +26,11 @@ celery_app.conf.update(
task_time_limit=30 * 60, # 30分钟
task_soft_time_limit=25 * 60, # 25分钟
)
# Celery Beat 定时调度配置
celery_app.conf.beat_schedule = {
"check-agent-schedules-every-minute": {
"task": "app.tasks.scheduler_tasks.check_agent_schedules_task",
"schedule": crontab(minute="*"), # 每分钟检查
},
}