标准答案

  1. 导出、大文件处理、批量通知、模型调用、跨服务编排和需要人工审核的任务,若无法在同步超时内可靠完成,适合改为异步受理。
  2. 202 表示服务已接受请求,不表示任务已成功。响应应提供操作 ID、状态查询地址或 Location、必要的重试和预计处理信息。
  3. 任务状态应至少区分 queued、running、succeeded、failed、cancelled 等终态和非终态,并在成功后提供结果引用,在失败后提供安全的错误码。
  4. 创建任务同样需要幂等键、权限校验、持久化状态、过期清理和审计,不能把消息入队成功当作业务永远成功。
  5. 客户端应采用轮询、SSE、Webhook 或通知机制获取进度,同时允许用户恢复查看历史任务而不是依赖单次页面连接。

题目解析

异步化是为了把不确定耗时从同步连接中移开,不是为了把错误隐藏到队列里。失败重试、死信、补偿和可观测性必须随之设计。

状态接口的权限与结果资源权限应一致,不能因为知道任务 ID 就读取其他用户的导出或敏感结果。

常见误区

  • 返回 202 后没有任何任务查询或结果获取方式。
  • 任务失败只记录在后台日志,调用方永远看到处理中。
  • 把所有短请求都异步化,增加无必要的轮询和用户等待。

作者信息