之前用 Python 写 RAG 的时候使用过 Celery,这次写个 Demo 试验下 Temproal,测试下异常中断任务自动恢复的实际场景,来判断之后如何融入项目。
模拟场景还是选择 RAG 文档向量化过程,共分为四步,解析文件、切分文件、分块向量化、构建索引。
用 Docker 启动 Temproal 后,同时启动了一个 Web 控制面板,可以看到所有运行中的 Workflow 和 Activity。
先启动 Worker,开启监听 Workflow 的执行动作,然后启动 Client 发送 Workflow,开始监听日志,最后手动强制退出 Worker 的执行。
此时 Temproal 的控制面板中可以看到第二步变成了灰色,代表着执行在这里中断了。
再次启动 Worker,可以看到右下角的日志是从第二步重新开始执行,跳过了第一步,这就是 Temproal 的中断恢复能力。
还可以在控制面板中看到整个 Worker 的执行流程,以及中间某个阶段进行的重试和重试的原因。
比如此处的异常就是心跳检测超时,所以对原有 Workflow 进行了跟踪终止,然后启动了新的 Workflow 继续执行。
以前想到耗时任务就是想到消息队列,RabbitMQ 之类的框架,现在有了 Temproal 就简单多了,不用自己写重试、消息消费等一堆冗余逻辑了。