用途:把耗时超过数秒、或依赖不可靠外部服务的工作从请求/响应周期中解耦,立即返回给用户,由后台 worker 异步处理。适用场景包括发送邮件、通知、webhook,生成报表或导出数据,处理上传与媒体转换,集成不可靠外部服务,以及构建事件驱动架构。
核心概念:任务队列模式(API 入队任务并立即返回 job ID,worker 异步处理);幂等性(任务可能重试,需设计为可安全重复执行);任务状态机(pending → running → succeeded/failed);至少一次投递(多数队列保证至少一次,代码需处理重复)。
主要能力与模式:立即返回 job ID;Celery 任务配置(超时、重试、acks_late 等);幂等任务设计(先检查状态、使用幂等键、upsert、去重窗口);任务状态持久化与状态轮询端点;死信队列处理永久失败任务;任务链、并行组与 chord 工作流;替代方案 RQ、Dramatiq 及云原生方案(AWS SQS、GCP Tasks、Azure Functions)。
使用方式:示例以 Celery 为主,broker 使用 redis://localhost:6379,通过 @app.task 定义任务,在 API 处理器中调用 .delay() 入队。RQ 使用 Queue(connection=Redis()).enqueue(...),Dramatiq 使用 @dramatiq.actor 装饰器。
最佳实践:立即返回、持久化任务状态、任务幂等、外部调用使用幂等键、设置软硬超时、实现死信队列、记录状态转换、对瞬时错误指数退避重试、不重试永久失败、监控队列深度。
限制:资料未提供具体安装命令、版本要求、收费与价格信息,也未说明各方案的性能对比数据。