from celery import Celery from app.config import get_settings def create_celery_app() -> Celery: settings = get_settings() app = Celery( "finance", broker=settings.broker_url, include=["app.imports.tasks", "app.exports.tasks"], ) app.conf.update( task_acks_late=True, task_acks_on_failure_or_timeout=False, worker_prefetch_multiplier=1, worker_max_tasks_per_child=50, worker_max_memory_per_child=250_000, task_time_limit=600, task_soft_time_limit=480, task_always_eager=settings.celery_task_always_eager, broker_connection_retry_on_startup=True, task_default_queue="finance", beat_schedule={ "purge-due-spaces-hourly": { "task": "spaces.purge_due", "schedule": 3600.0, } }, ) return app celery_app = create_celery_app()