Celery 用于分布式后台任务处理,资料聚焦于路由、任务组合与失败处理。它适用于需要跨机器多 worker、持续高任务量的场景;若只是短时并发 HTTP 调用、单机中等负载或极长 IO 任务,资料建议改用线程池、asyncio.gather、Django 内置任务队列或 RQ/huey/dramatiq 等更轻量方案。
主要能力:可按任务名路由到不同队列(CELERY_TASK_ROUTES),优先级为 task_routes > apply_async(queue=) > 装饰器 queue;支持 chain(顺序)、group(并行)、chord(并行加回调,需配置 result backend);支持自动与手动重试(autoretry_for、retry_backoff、retry_jitter、max_retries);通过 acks_late 与 task_reject_on_worker_lost 实现至少一次投递,因此任务须幂等。
使用方式:用 celery -A myproject worker -Q high -P solo -n high@%h 等命令启动按队列划分的 worker;pool 可选 solo、prefork、eventlet/gevent。可用 celery -A myproject inspect active/registered/config 排查路由、注册与配置问题。
适用场景:需要跨机器 worker、任务编排(链、组、回调)、可靠重试与失败处理的异步作业。
限制与风险:需自担 broker、worker 集群与监控的运维成本;路由到无 worker 消费的队列会导致任务静默滞留;chord 依赖 result backend,无界 group 或超出 worker 容量会造成回调不触发;time_limit 会硬性杀任务,soft_time_limit 抛出 SoftTimeLimitExceeded;重复执行需靠幂等设计避免副作用。资料未提供收费、价格或平台信息。