"""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,
)