from __future__ import annotations from celery import Celery from celery.schedules import crontab from iaai_sync_service.settings import get_settings settings = get_settings() app = Celery("iaai_sync_service") app.conf.broker_url = settings.celery_broker_url app.conf.result_backend = settings.celery_result_backend app.conf.task_default_queue = "iaai_sync" app.conf.timezone = "UTC" app.conf.enable_utc = True app.conf.broker_connection_retry = True app.conf.broker_connection_retry_on_startup = True app.conf.broker_connection_max_retries = None def build_beat_schedule() -> dict[str, dict]: schedule: dict[str, dict] = { "sync-iaai-cars-every-hour": { "task": "iaai.sync_cars_feed", "schedule": crontab(minute=0), "options": {"queue": "iaai_sync"}, } } if settings.session_keepalive_enabled: schedule["keep-iaai-session-alive"] = { "task": "iaai.keep_session_alive", "schedule": crontab(minute=f"*/{settings.session_keepalive_interval_minutes}"), "options": {"queue": "iaai_sync"}, } return schedule app.conf.beat_schedule = build_beat_schedule() app.conf.imports = ("iaai_sync_service.tasks",)