from celery import Celery from kombu import Queue, Exchange from app.core.config import settings celery_app = Celery( "sketch_to_garment", broker=f"redis://{settings.REDIS_HOST}:{settings.REDIS_PORT}/2", backend=f"redis://{settings.REDIS_HOST}:{settings.REDIS_PORT}/{settings.REDIS_DB}", include=["app.service.sketch2garment.tasks"] ) print(f"redis://{settings.REDIS_HOST}:{settings.REDIS_PORT}/3") print(f"celery_app: {celery_app}") celery_app.conf.update( task_serializer="json", accept_content=["json"], result_serializer="json", timezone="Asia/Hong_Kong", enable_utc=True, task_track_started=True, task_time_limit=300, # 单个任务最长 5 分钟 task_soft_time_limit=280, # 定义队列 task_queues=( Queue("sketch_to_garment_queue", exchange=Exchange("sketch_to_garment_exchange", type="direct"), durable=True), ), task_routes={ 'app.service.sketch2garment.tasks.sketch_to_garment': { 'queue': 'sketch_to_garment_queue', 'exchange': 'sketch_to_garment_exchange', # ← 修改这里 }, }, task_default_queue="sketch_to_garment_queue", worker_concurrency=1, worker_prefetch_multiplier=1, worker_max_tasks_per_child=1, task_acks_late=True, task_reject_on_worker_lost=True, )