Spaces:
Sleeping
Sleeping
| # api/celery_app.py | |
| from celery import Celery | |
| from api.config import get_settings | |
| settings = get_settings() | |
| celery_app = Celery( | |
| "gridops_worker", | |
| broker=settings.celery_broker_url, | |
| backend=settings.celery_result_backend, | |
| include=['worker.tasks'], | |
| ) | |
| celery_app.conf.update( | |
| task_serializer="json", | |
| result_serializer="json", | |
| accept_content=["json"], | |
| task_track_started=True, | |
| result_expires=settings.task_result_expires, # 3600s = 1 hour | |
| worker_concurrency=settings.worker_concurrency, # 2 for 8GB RAM | |
| worker_prefetch_multiplier=1, | |
| task_acks_late=True, # Task acknowledged AFTER completion, not pickup | |
| worker_max_tasks_per_child=50, # Restart worker process every 50 tasks — prevents memory leaks | |
| task_soft_time_limit=1200, # Warn at 20 minutes | |
| task_time_limit=1800, # Hard kill at 30 minutes | |
| broker_connection_retry_on_startup=True, | |
| ) |