39 lines
1.2 KiB
Python
39 lines
1.2 KiB
Python
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",)
|