From a4c402a756fa3213caf9d2cde0e4ceb2d57727f2 Mon Sep 17 00:00:00 2001 From: Nick Hill Date: Wed, 19 Feb 2025 16:49:01 -0800 Subject: [PATCH] [BugFix] Avoid error traceback in logs when V1 `LLM` terminates (#13565) Signed-off-by: Nick Hill --- vllm/v1/engine/core_client.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/vllm/v1/engine/core_client.py b/vllm/v1/engine/core_client.py index 8641833e43..77df9ed540 100644 --- a/vllm/v1/engine/core_client.py +++ b/vllm/v1/engine/core_client.py @@ -252,14 +252,18 @@ class SyncMPClient(MPClient): outputs_queue = self.outputs_queue def process_outputs_socket(): - while True: - (frame, ) = output_socket.recv_multipart(copy=False) - outputs = decoder.decode(frame.buffer) - if outputs.utility_output: - _process_utility_output(outputs.utility_output, - utility_results) - else: - outputs_queue.put_nowait(outputs) + try: + while True: + (frame, ) = output_socket.recv_multipart(copy=False) + outputs = decoder.decode(frame.buffer) + if outputs.utility_output: + _process_utility_output(outputs.utility_output, + utility_results) + else: + outputs_queue.put_nowait(outputs) + except zmq.error.ContextTerminated: + # Expected when the class is GC'd / during process termination. + pass # Process outputs from engine in separate thread. Thread(target=process_outputs_socket, daemon=True).start()