- Move watch_folders to dedicated 'watcher' queue with its own single-concurrency container so it never blocks scan/thumbnail slots - Add get_current_user_media dependency that accepts ?token= query param for <img src> / <video src> media endpoints (thumb, original, proxy) — fixes 401 on thumbnails - Append JWT token to all media URLs in the frontend - Add missing 'memories' case in sidebar navigation switch Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
39 lines
1.2 KiB
Python
39 lines
1.2 KiB
Python
"""
|
|
Celery configuration and app initialization
|
|
"""
|
|
from celery import Celery
|
|
from app.config import settings
|
|
|
|
# Create Celery app
|
|
celery_app = Celery(
|
|
'mulita',
|
|
broker=settings.celery_broker_url,
|
|
backend=settings.celery_result_backend,
|
|
include=['app.tasks.scan', 'app.tasks.thumbs', 'app.tasks.vision']
|
|
)
|
|
|
|
# Configure Celery
|
|
celery_app.conf.update(
|
|
task_serializer='json',
|
|
accept_content=['json'],
|
|
result_serializer='json',
|
|
timezone='UTC',
|
|
enable_utc=True,
|
|
task_routes={
|
|
'app.tasks.thumbs.*': {'queue': 'high'},
|
|
'app.tasks.scan.*': {'queue': 'low'},
|
|
'app.tasks.vision.*': {'queue': 'vision'},
|
|
'embed_photo': {'queue': 'vision'},
|
|
'ocr_photo': {'queue': 'vision'},
|
|
'detect_objects': {'queue': 'vision'},
|
|
'extract_faces': {'queue': 'vision'},
|
|
'classify_content': {'queue': 'vision'},
|
|
'vision_fanout': {'queue': 'vision'},
|
|
'watch_folders': {'queue': 'watcher'},
|
|
},
|
|
task_default_queue='default',
|
|
task_default_exchange='default',
|
|
task_default_exchange_type='direct',
|
|
task_default_routing_key='default',
|
|
broker_connection_retry_on_startup=True,
|
|
) |