处理器
工作流处理器 #
基类:Future[RunResultT]
处理运行中的工作流:等待结果、流式事件、访问上下文或取消。
实例由 Workflow.run 返回。 它们可以被等待以获取最终结果,并通过 stream_events 支持流式传输中间事件。
workflows/handler.py中的源代码
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 | |
get_stop_event #
get_stop_event() -> StopEvent | None
此运行的停止事件。一旦 future 完成即被定义。在未来的主要版本中,此项将被移除,结果将直接是停止事件本身。
workflows/handler.py中的源代码
54 55 56 | |
stop_event_result
async
#
stop_event_result() -> StopEvent
获取此运行的停止事件。一旦 future 完成,此值始终会被定义。在未来的主要版本中,此功能将被移除,结果将直接是停止事件本身。
workflows/handler.py 中的源代码
58 59 60 61 62 63 64 | |
is_done #
is_done() -> bool
当工作流完成时返回 True。
workflows/handler.py中的源代码
78 79 80 | |
stream_events
async
#
stream_events(expose_internal: bool = False) -> AsyncGenerator[事件, None]
在工作流执行过程中实时流式传输事件。
此方法提供对工作流执行期间生成事件的实时访问,允许监控和处理中间结果。 事件按照工作流生成的顺序依次产生。
该流包含写入上下文流队列的所有事件,并在遇到停止事件时终止,表示工作流已完成。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
expose_internal
|
bool
|
是否公开内部事件。 |
False
|
返回:
| 类型 | 描述 |
|---|---|
AsyncGenerator[事件, None]
|
AsyncGenerator[Event, None]: 一个异步生成器,在工作流生成事件对象时产生这些对象。 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
如果未在处理器上设置上下文。 |
WorkflowRuntimeError
|
如果所有事件已被同一处理器实例上的先前调用 |
示例:
handler = workflow.run()
# Stream and process events in real-time
async for event in handler.stream_events():
if isinstance(event, StopEvent):
print(f"Workflow completed with result: {event.result}")
else:
print(f"Received event: {event}")
# Get final result
result = await handler
备注
每个处理器实例只能流式传输事件一次。后续对 stream_events() 的调用将引发 WorkflowRuntimeError。
workflows/handler.py中的源代码
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | |
cancel_run
async
#
cancel_run() -> None
取消正在运行的工作流。
向底层上下文发出信号以引发 用户取消工作流, 该异常将被工作流捕获并优雅地结束运行。
示例:
handler = workflow.run()
await handler.cancel_run()
workflows/handler.py中的源代码
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 | |