Files
auto-archiver-api/app/shared/task_messaging.py
2026-03-02 15:04:38 +00:00

27 lines
820 B
Python

from functools import lru_cache
from celery import Celery
import redis
from app.shared.settings import get_settings
@lru_cache
def get_celery(name: str = "") -> Celery:
return Celery(
name,
broker_url=get_settings().celery_broker_url,
result_backend=get_settings().celery_broker_url,
broker_connection_retry_on_startup=True,
broker_transport_options={
"queue_order_strategy": "priority",
"visibility_timeout": 43200, # 12 hours - must be > longest task time_limit
},
result_expires=86400, # expire task results after 24 hours to prevent Redis memory buildup
worker_cancel_long_running_tasks_on_connection_loss=True,
)
def get_redis() -> redis.Redis:
return redis.Redis.from_url(get_settings().celery_broker_url)