Skip to content

超时与等待策略

可视化边界:超时图只说明等待边界,不代表 flow config 的静态结构。

TriggerFlow 是事件驱动 runtime,不保证每次 start() 都会立刻产出结果。

1. timeout 作用点时间线

如何阅读这张图

  • get_result(timeout=...)get_runtime_stream(timeout=...) 是两条独立等待链。
  • stream timeout 只停止旁路消费,不会自动把 execution 终止。

2. 常见等待来源

  • when() 等外部事件
  • pause_for()continue_with()
  • runtime stream 等新事件或 stop_stream()

3. get_result(timeout=...)

execution.get_result(timeout=...) / flow.start(timeout=...) 超时后会返回 None 并给出 warning。

这通常意味着:

  • 还没有最终 result
  • 你可能忘了 .end()set_result()

4. stream timeout

get_runtime_stream(timeout=...) 超时只会停止 stream 消费,不会自动结束 execution。

5. API 边界建议

  • Web 请求边界上明确设置 timeout
  • 长任务改用 start_execution(..., wait_for_result=False)
  • 等外部输入时不要把“无限等待”写在业务 chunk 里

6. 推荐姿势

  • 线性链路:可以直接 start()
  • 长生命周期流程:start_execution() + 外部等待
  • UI 中间态:runtime stream