用途:把耗时或不可靠的工作从请求/响应周期中解耦,让 API 立即返回并交由后台 worker 异步处理。适合数秒以上的任务、发送邮件/通知/Webhook、生成报告或导出数据、处理上传与媒体转换、调用不可靠的外部服务,以及构建事件驱动架构。
主要能力:任务队列模式(API 入队作业并立即返回 job ID);幂等性设计;作业状态机(pending → running → succeeded/failed);至少一次投递下处理重复。文档给出返回 job ID、Celery 任务配置、幂等任务、作业状态持久化、死信队列、状态轮询端点、任务链与工作流等模式,并列出 RQ、Dramatiq、AWS SQS + Lambda、Google Cloud Tasks、Azure Functions 作为可选方案。
使用方式:示例基于 Celery,broker 使用 Redis 地址 redis://localhost:6379。定义 @app.task 后,在 API 处理器中调用 .delay(...) 入队;可通过 app.conf.update 设置 task_time_limit、task_soft_time_limit、task_acks_late、task_reject_on_worker_lost、worker_prefetch_multiplier 等。重试使用 bind=True、max_retries、default_retry_delay、autoretry_for,并在异常中用 self.retry 配合指数退避;外部调用应传 idempotency key;工作流可用 chain、group、chord。
限制:文档中的实现片段为示例,需按实际基础设施调整;未提供具体安装命令、依赖版本、许可证、价格或性能数据;云方案未展开配置细节。