diff --git a/api/app/celery_app.py b/api/app/celery_app.py index 185d746c..e880e7d0 100644 --- a/api/app/celery_app.py +++ b/api/app/celery_app.py @@ -67,11 +67,11 @@ celery_app.conf.update( 'app.core.rag.tasks.parse_document': {'queue': 'document_tasks'}, 'app.core.rag.tasks.build_graphrag_for_kb': {'queue': 'document_tasks'}, - # Beat/periodic tasks → document_tasks queue (prefork worker) - 'app.tasks.workspace_reflection_task': {'queue': 'document_tasks'}, - 'app.tasks.regenerate_memory_cache': {'queue': 'document_tasks'}, - 'app.tasks.run_forgetting_cycle_task': {'queue': 'document_tasks'}, - 'app.controllers.memory_storage_controller.search_all': {'queue': 'document_tasks'}, + # Beat/periodic tasks → periodic_tasks queue (dedicated periodic worker) + 'app.tasks.workspace_reflection_task': {'queue': 'periodic_tasks'}, + 'app.tasks.regenerate_memory_cache': {'queue': 'periodic_tasks'}, + 'app.tasks.run_forgetting_cycle_task': {'queue': 'periodic_tasks'}, + 'app.controllers.memory_storage_controller.search_all': {'queue': 'periodic_tasks'}, }, ) diff --git a/api/docker-compose.yml b/api/docker-compose.yml index 4f855700..69763de2 100644 --- a/api/docker-compose.yml +++ b/api/docker-compose.yml @@ -19,6 +19,7 @@ services: depends_on: - worker-memory - worker-document + - worker-periodic # Memory worker - Memory read/write tasks (threads pool for asyncio) worker-memory: @@ -48,6 +49,20 @@ services: networks: - celery + # Periodic worker - Scheduled/beat tasks (prefork, low concurrency) + worker-periodic: + image: redbear-mem-open:latest + container_name: worker-periodic + env_file: + - .env + volumes: + - ./files:/files + - /etc/localtime:/etc/localtime:ro + command: celery -A app.celery_worker.celery_app worker -E --loglevel=info --pool=prefork --concurrency=2 --queues=periodic_tasks --max-tasks-per-child=50 -n periodic_worker@%h + restart: unless-stopped + networks: + - celery + # Celery Beat - scheduler beat: image: redbear-mem-open:latest