Handler
WorkflowHandler #
Bases: Future[RunResultT]
Handle a running workflow: await results, stream events, access context, or cancel.
Instances are returned by Workflow.run. They can be awaited for the final result and support streaming intermediate events via stream_events.
Source code in workflows/handler.py
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 162 163 | |
get_stop_event #
get_stop_event() -> StopEvent | None
The stop event for this run. Always defined once the future is done. In a future major release, this will be removed, and the result will be the stop event itself.
Source code in workflows/handler.py
56 57 58 | |
stop_event_result
async
#
stop_event_result() -> StopEvent
Get the stop event for this run. Always defined once the future is done. In a future major release, this will be removed, and the result will be the stop event itself.
Source code in workflows/handler.py
60 61 62 63 64 65 66 | |
is_done #
is_done() -> bool
Return True when the workflow has completed.
Source code in workflows/handler.py
80 81 82 | |
stream_events
async
#
stream_events(expose_internal: bool = False) -> AsyncGenerator[Event, None]
Stream events from the workflow execution as they occur.
This method provides real-time access to events generated during workflow execution, allowing for monitoring and processing of intermediate results. Events are yielded in the order they are generated by the workflow.
The stream includes all events written to the context's streaming queue, and terminates when a StopEvent is encountered, indicating the workflow has completed.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
expose_internal
|
bool
|
Whether to expose internal events. |
False
|
Returns:
| Type | Description |
|---|---|
AsyncGenerator[Event, None]
|
AsyncGenerator[Event, None]: An async generator that yields Event objects as they are produced by the workflow. |
Raises:
| Type | Description |
|---|---|
ValueError
|
If the context is not set on the handler. |
WorkflowRuntimeError
|
If all events have already been consumed by a
previous call to |
Examples:
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
Note
Events can only be streamed once per handler instance. Subsequent
calls to stream_events() will raise a WorkflowRuntimeError.
Source code in workflows/handler.py
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 | |
cancel_run
async
#
cancel_run() -> None
Cancel the running workflow.
Signals the underlying context to raise WorkflowCancelledByUser, which will be caught by the workflow and gracefully end the run.
Examples:
handler = workflow.run()
await handler.cancel_run()
Source code in workflows/handler.py
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 | |