chrysopedia/backend/worker.py
jlightner 5e4b173917 feat: Built send_digest_emails Celery task with per-user content queryi…
- "backend/tasks/__init__.py"
- "backend/tasks/notifications.py"
- "backend/worker.py"
- "docker-compose.yml"

GSD-Task: S01/T02
2026-04-04 12:15:43 +00:00

44 lines
1.2 KiB
Python

"""Celery application instance for the Chrysopedia pipeline.
Usage:
celery -A worker worker --loglevel=info
celery -A worker worker --beat --loglevel=info (with Beat scheduler)
"""
from celery import Celery
from celery.schedules import crontab
from config import get_settings
settings = get_settings()
celery_app = Celery(
"chrysopedia",
broker=settings.redis_url,
backend=settings.redis_url,
)
celery_app.conf.update(
task_serializer="json",
result_serializer="json",
accept_content=["json"],
timezone="UTC",
enable_utc=True,
task_track_started=True,
task_acks_late=True,
worker_prefetch_multiplier=1,
)
# Import pipeline.stages so that @celery_app.task decorators register tasks.
# This import must come after celery_app is defined.
import pipeline.stages # noqa: E402, F401
import tasks.notifications # noqa: E402, F401
# ── Celery Beat schedule ─────────────────────────────────────────────────────
celery_app.conf.beat_schedule = {
"send-digest-emails": {
"task": "tasks.notifications.send_digest_emails",
"schedule": crontab(hour=9, minute=0), # daily at 09:00 UTC
},
}