异步任务轮询
Async Task Polling
对异步AI生成API的任务提交-轮询-结果获取模式,支持超时和状态追踪
子问题
1.任务提交与ID获取
2.轮询间隔与超时控制
3.任务状态转换追踪
4.结果下载与格式转换
5.多 API 后端状态字符串归一化映射
6.Web Worker 中的任务生命周期与主线程通信
7.批量场景的滑动窗口并发执行
各项目的解法1 solutions
Signals
横向对比
| 维度 | moyin-creator |
|---|---|
| 轮询策略 | 固定间隔轮询(2-3s),TaskPoller 支持动态超时扩展 |
| 并发控制 | TaskQueue 优先级队列 + 动态 maxConcurrency 函数注入 |
| 超时机制 | 三级超时:默认10min / estimatedTime×2+2min / 硬上限30min |
| 重试策略 | TaskQueue 内置 retryCount/maxRetries,TaskPoller 网络错误自动重试 |
| 取消机制 | 模块级 cancelled 标志 + TaskQueue.cancelAll 批量取消 |
| 状态模型 | TaskItem 4态(queued/running/completed/failed)+ AsyncTaskResult 4态 |
| Worker隔离 | 整个 AI 流水线运行在 Web Worker 中,postMessage 通信 |
| 多后端兼容 | storyboard-service 状态映射表兼容 11 种 API 状态字符串 |
最佳实践
1.指数退避轮询减少API压力
2.任务队列管理多个并发轮询
3.Promise 内嵌 resolve/reject 实现队列到调用方的透明等待
4.动态超时基于服务端 estimatedTime 自适应扩展
5.网络错误与业务错误分类处理避免误杀长任务