from celery import Celery from celery.schedules import timedelta from web.config import settings celery_app = Celery("evosync", broker=settings.REDIS_URL, backend=settings.REDIS_URL) celery_app.conf.update( task_serializer="json", result_serializer="json", accept_content=["json"], timezone="Europe/Moscow", enable_utc=True, task_track_started=True, task_acks_late=True, worker_prefetch_multiplier=1, broker_connection_retry_on_startup=True, task_routes={ "web.tasks.sync.*": {"queue": "sync"}, "web.tasks.health.*": {"queue": "health"}, "web.tasks.catalog.*": {"queue": "default"}, "web.notifications.tasks.*": {"queue": "notifications"}, }, beat_schedule={ "refresh-catalog": { "task": "web.tasks.catalog.refresh_catalog", "schedule": timedelta(seconds=settings.CATALOG_REFRESH_INTERVAL_SECONDS), }, "refresh-vk-catalog": { "task": "web.tasks.vk_catalog.refresh_vk_catalog", "schedule": timedelta(seconds=settings.CATALOG_REFRESH_INTERVAL_SECONDS), }, }, ) # Register task modules so beat/worker can discover them celery_app.autodiscover_tasks(["web.tasks.catalog", "web.tasks.vk_catalog"])