"""Celery 配置""" from celery import Celery from celery.schedules import crontab from app.core.config import settings celery_app = Celery( "h3c_onu_ms", broker=settings.REDIS_URL, backend=settings.REDIS_URL ) celery_app.conf.update( task_serializer='json', result_serializer='json', accept_content=['json'], timezone='Asia/Shanghai', enable_utc=True, # 使用专属队列,避免与同 Redis 上的其他 Celery 项目抢任务 task_default_queue='h3c_onu_ms', beat_schedule={ # 每5分钟触发一次(最小间隔),任务内部根据配置的间隔自行节流 'check-devices-scheduler': { 'task': 'app.tasks.check_tasks.check_all_devices', 'schedule': 300, 'options': {'queue': 'h3c_onu_ms'}, }, 'aggregate-daily-snapshot': { 'task': 'app.tasks.check_tasks.aggregate_daily_snapshot', 'schedule': crontab(hour=1, minute=0), # 每天凌晨 1:00 'options': {'queue': 'h3c_onu_ms'}, }, 'cleanup-audit-logs': { 'task': 'app.tasks.audit_tasks.cleanup_audit_logs_task', 'schedule': crontab(hour=2, minute=0), # 每天凌晨 2:00 'options': {'queue': 'h3c_onu_ms'}, }, 'cleanup-status-history': { 'task': 'app.tasks.check_tasks.cleanup_status_history', 'schedule': crontab(hour=3, minute=0), # 每天凌晨 3:00 'options': {'queue': 'h3c_onu_ms'}, }, }, )