Files
fquiz/api/app/core/celery_app.py
T

43 lines
1.2 KiB
Python

from __future__ import annotations
from celery import Celery
from .config import get_settings
settings = get_settings()
celery_app = Celery(
"fquiz",
broker=settings.resolved_celery_broker_url,
backend=settings.resolved_celery_result_backend,
include=[
"app.tasks.schedule_tasks",
"app.tasks.elevation_tasks",
"app.tasks.worker_registry_tasks",
],
)
celery_app.conf.update(
accept_content=["json"],
beat_schedule={
"expire-overdue-schedule-items": {
"task": "app.tasks.schedule_tasks.expire_overdue_schedule_items",
"schedule": settings.scheduler_expire_interval_seconds,
},
"sweep-worker-registry-offline": {
"task": "app.tasks.worker_registry_tasks.sweep_worker_registry_offline",
"schedule": 30.0,
},
},
enable_utc=True,
result_serializer="json",
task_acks_late=True,
task_serializer="json",
task_track_started=True,
timezone=settings.celery_timezone,
worker_prefetch_multiplier=1,
)
# Register worker lifecycle signals for auto-registration/heartbeat/offline states.
from . import worker_signals as _worker_signals # noqa: F401,E402