|
|
|
@@ -639,26 +639,19 @@ class GraphEngine: |
|
|
|
retry_start_at = datetime.now(UTC).replace(tzinfo=None) |
|
|
|
# yield control to other threads |
|
|
|
time.sleep(0.001) |
|
|
|
generator = node_instance.run() |
|
|
|
for item in generator: |
|
|
|
if isinstance(item, GraphEngineEvent): |
|
|
|
if isinstance(item, BaseIterationEvent): |
|
|
|
# add parallel info to iteration event |
|
|
|
item.parallel_id = parallel_id |
|
|
|
item.parallel_start_node_id = parallel_start_node_id |
|
|
|
item.parent_parallel_id = parent_parallel_id |
|
|
|
item.parent_parallel_start_node_id = parent_parallel_start_node_id |
|
|
|
elif isinstance(item, BaseLoopEvent): |
|
|
|
# add parallel info to loop event |
|
|
|
item.parallel_id = parallel_id |
|
|
|
item.parallel_start_node_id = parallel_start_node_id |
|
|
|
item.parent_parallel_id = parent_parallel_id |
|
|
|
item.parent_parallel_start_node_id = parent_parallel_start_node_id |
|
|
|
|
|
|
|
yield item |
|
|
|
event_stream = node_instance.run() |
|
|
|
for event in event_stream: |
|
|
|
if isinstance(event, GraphEngineEvent): |
|
|
|
# add parallel info to iteration event |
|
|
|
if isinstance(event, BaseIterationEvent | BaseLoopEvent): |
|
|
|
event.parallel_id = parallel_id |
|
|
|
event.parallel_start_node_id = parallel_start_node_id |
|
|
|
event.parent_parallel_id = parent_parallel_id |
|
|
|
event.parent_parallel_start_node_id = parent_parallel_start_node_id |
|
|
|
yield event |
|
|
|
else: |
|
|
|
if isinstance(item, RunCompletedEvent): |
|
|
|
run_result = item.run_result |
|
|
|
if isinstance(event, RunCompletedEvent): |
|
|
|
run_result = event.run_result |
|
|
|
if run_result.status == WorkflowNodeExecutionStatus.FAILED: |
|
|
|
if ( |
|
|
|
retries == max_retries |
|
|
|
@@ -694,7 +687,7 @@ class GraphEngine: |
|
|
|
# if run failed, handle error |
|
|
|
run_result = self._handle_continue_on_error( |
|
|
|
node_instance, |
|
|
|
item.run_result, |
|
|
|
event.run_result, |
|
|
|
self.graph_runtime_state.variable_pool, |
|
|
|
handle_exceptions=handle_exceptions, |
|
|
|
) |
|
|
|
@@ -797,28 +790,28 @@ class GraphEngine: |
|
|
|
should_continue_retry = False |
|
|
|
|
|
|
|
break |
|
|
|
elif isinstance(item, RunStreamChunkEvent): |
|
|
|
elif isinstance(event, RunStreamChunkEvent): |
|
|
|
yield NodeRunStreamChunkEvent( |
|
|
|
id=node_instance.id, |
|
|
|
node_id=node_instance.node_id, |
|
|
|
node_type=node_instance.node_type, |
|
|
|
node_data=node_instance.node_data, |
|
|
|
chunk_content=item.chunk_content, |
|
|
|
from_variable_selector=item.from_variable_selector, |
|
|
|
chunk_content=event.chunk_content, |
|
|
|
from_variable_selector=event.from_variable_selector, |
|
|
|
route_node_state=route_node_state, |
|
|
|
parallel_id=parallel_id, |
|
|
|
parallel_start_node_id=parallel_start_node_id, |
|
|
|
parent_parallel_id=parent_parallel_id, |
|
|
|
parent_parallel_start_node_id=parent_parallel_start_node_id, |
|
|
|
) |
|
|
|
elif isinstance(item, RunRetrieverResourceEvent): |
|
|
|
elif isinstance(event, RunRetrieverResourceEvent): |
|
|
|
yield NodeRunRetrieverResourceEvent( |
|
|
|
id=node_instance.id, |
|
|
|
node_id=node_instance.node_id, |
|
|
|
node_type=node_instance.node_type, |
|
|
|
node_data=node_instance.node_data, |
|
|
|
retriever_resources=item.retriever_resources, |
|
|
|
context=item.context, |
|
|
|
retriever_resources=event.retriever_resources, |
|
|
|
context=event.context, |
|
|
|
route_node_state=route_node_state, |
|
|
|
parallel_id=parallel_id, |
|
|
|
parallel_start_node_id=parallel_start_node_id, |