IntegraChat / backend /workers /scheduler.py
nothingworry's picture
feat: add knowledge base management and analytics dashboard
aa63765
"""
backend/workers/scheduler.py
Simple scheduler wiring for Celery beat.
This file merely defines a schedule mapping that celeryconfig.py/ Celery app can import.
You can use Celery Beat (celery -A backend.workers.celeryconfig beat) or
run APScheduler to call the task functions if not using Celery beat.
"""
from datetime import timedelta
import os
# Recommended schedule configuration for production:
SCHEDULE = {
# run daily metrics every day at midnight UTC
"daily-metrics": {
"task": "backend.workers.analytics_worker.compute_daily_metrics",
"schedule": {"type": "crontab", "hour": 0, "minute": 5}, # small delay after midnight
},
# run RAG quality checks nightly
"rag-quality-nightly": {
"task": "backend.workers.analytics_worker.compute_rag_quality",
"schedule": {"type": "crontab", "hour": 2, "minute": 30},
"args": (20, 3)
}
}
# If you prefer periodic seconds schedule (for local dev),
# you can expose an alternate schedule via env:
if os.getenv("LOCAL_CELERY_QUICK", "0") == "1":
SCHEDULE = {
"daily-metrics": {"task": "backend.workers.analytics_worker.compute_daily_metrics",
"schedule": timedelta(seconds=60)}, # every minute for dev
"rag-quality": {"task": "backend.workers.analytics_worker.compute_rag_quality",
"schedule": timedelta(seconds=120)}
}