Newer
Older
gn-synapse / app / worker / celery_app.py
"""Celery: приложение воркера и каркасные задачи."""

from celery import Celery

from app.config import get_settings

settings = get_settings()

celery_app = Celery(
    "synapse",
    broker=settings.redis_url,
    backend=settings.redis_url,
    include=["app.worker.tasks"],
)

celery_app.conf.update(
    task_default_queue="synapse",
    task_track_started=True,
    # Beat стартует вместе с воркером (`worker -B`):
    # раз в 60 с — ретраи; ежечасно — ретеншн (ttl_seconds + RETENTION_DAYS).
    beat_schedule={
        "retry-due-deliveries": {
            "task": "synapse.retry_due",
            "schedule": 60.0,
        },
        "expire-old-events": {
            "task": "synapse.expire_events",
            "schedule": 3600.0,
        },
    },
    task_acks_late=True,
    worker_prefetch_multiplier=1,
)