Temporal(2.2万星)2026:可靠工作流的持久化执行——完整指南
Temporal(22,126星)让你的工作流获得持久化执行能力:崩溃、重试、超时自动处理。本文教你构建第一个持久化工作流。
💡 你将学到
Temporal(22,126星)让你的工作流获得持久化执行能力:崩溃、重试、超时自动处理。本文教你构建第一个持久化工作流。
直接给结论
temporalio/temporal(22,126星,Go)是一个持久化执行平台。你的工作流代码即使进程中途崩溃也能完整跑完——Temporal记录每一步,从失败的确切位置恢复。这使它成为支付流程、订单处理和长时业务流程的首选。
为什么持久化执行重要
- 防崩溃:进程或机器故障后工作流自动恢复
- 确定性重试:活动自动指数退避重试
- 超时与心跳:检测卡住的步骤并快速失败
- 可视化:每个工作流状态都能在UI里查询
核心概念
| 概念 | 作用 |
|---|---|
| Workflow | 编排逻辑(持久化、确定性) |
| Activity | 副作用(API调用、DB写入),带重试 |
| Worker | 执行工作流和活动的进程 |
| Server | 存储工作流状态和历史 |
最小工作流(Python SDK)
pip install temporalio
from temporalio import activity, workflow
@activity.defn
async def charge_card(amount: float) -> str:
return f"charged {amount}"
@workflow.defn
class OrderWorkflow:
@workflow.run
async def run(self, amount: float) -> str:
return await workflow.execute_activity(
charge_card, amount, start_to_close_timeout=30
)
启动开发服务器(temporal server start-dev),然后启动worker并执行工作流——中途杀掉进程它也能恢复。
实用技巧
- 保持工作流确定性:工作流代码里不要有随机数和直接I/O——用activities。
- 每个activity都设
start_to_close_timeout,避免卡死。 - 用signals/queries从外部与运行中的工作流交互。
FAQ
免费吗? 是——MIT开源协议;Temporal Cloud是托管选项。
需要Kubernetes吗? 不需要——Docker或单个二进制即可运行;k8s可选。
什么时候用它而不是消息队列? 需要多步骤的重试、状态和可视化时用Temporal;简单即发即忘用普通队列。
相关文章
❓ 常见问题
Is it free?
Yes - MIT licensed open source; Temporal Cloud is the hosted option.
Do I need Kubernetes?
No - it runs on Docker or a single binary; k8s is optional.
When should I use it vs a queue?
Use Temporal when you need retries, state, and visibility across many steps; use a plain queue for simple fire-and-forget.
本站文章由编辑人工撰写,收录的工具均经过实测或公开资料核验。文中链接指向工具官网或 GitHub 仓库,仅作信息参考,不构成付费推广。
