随笔

Temproal - Powerful Worker

之前用 Python 写 RAG 的时候使用过 Celery,这次写个 Demo 试验下 Temproal,测试下异常中断任务自动恢复的实际场景,来判断之后如何融入项目。

模拟场景还是选择 RAG 文档向量化过程,共分为四步,解析文件、切分文件、分块向量化、构建索引。

code.png

用 Docker 启动 Temproal 后,同时启动了一个 Web 控制面板,可以看到所有运行中的 Workflow 和 Activity。

temproalui.png

先启动 Worker,开启监听 Workflow 的执行动作,然后启动 Client 发送 Workflow,开始监听日志,最后手动强制退出 Worker 的执行。

run.png

此时 Temproal 的控制面板中可以看到第二步变成了灰色,代表着执行在这里中断了。

exception.png

再次启动 Worker,可以看到右下角的日志是从第二步重新开始执行,跳过了第一步,这就是 Temproal 的中断恢复能力。

continue.png

还可以在控制面板中看到整个 Worker 的执行流程,以及中间某个阶段进行的重试和重试的原因。

resume.png

excuteretry.png

比如此处的异常就是心跳检测超时,所以对原有 Workflow 进行了跟踪终止,然后启动了新的 Workflow 继续执行。

reason.png

以前想到耗时任务就是想到消息队列,RabbitMQ 之类的框架,现在有了 Temproal 就简单多了,不用自己写重试、消息消费等一堆冗余逻辑了。

本文链接:https://note.lilonghe.net/post/powerful-worker-of-temproal.html

-- EOF --