[fix] fix ZmqIpcClient.close() error (#3600)

This commit is contained in:
李泳桦
2025-08-26 10:16:41 +08:00
committed by GitHub
parent b1f8f1aa07
commit df27a488b1
3 changed files with 27 additions and 5 deletions

View File

@@ -212,7 +212,7 @@ class LLMEngine:
) )
self.worker_proc = self._start_worker_service() self.worker_proc = self._start_worker_service()
console_logger.info("Waitting worker processes ready...") console_logger.info("Waiting for worker processes to be ready...")
time.sleep(5) time.sleep(5)
self.worker_init_status = dict() self.worker_init_status = dict()

View File

@@ -18,6 +18,8 @@ from abc import ABC, abstractmethod
import zmq import zmq
from fastdeploy.utils import llm_logger
class ZmqClientBase(ABC): class ZmqClientBase(ABC):
""" """
@@ -72,6 +74,10 @@ class ZmqClientBase(ABC):
self._ensure_socket() self._ensure_socket()
return self.socket.recv_pyobj() return self.socket.recv_pyobj()
@abstractmethod
def close(self):
pass
class ZmqIpcClient(ZmqClientBase): class ZmqIpcClient(ZmqClientBase):
def __init__(self, name, mode): def __init__(self, name, mode):
@@ -89,3 +95,19 @@ class ZmqIpcClient(ZmqClientBase):
def connect(self): def connect(self):
self._ensure_socket() self._ensure_socket()
self.socket.connect(f"ipc://{self.file_name}") self.socket.connect(f"ipc://{self.file_name}")
def close(self):
"""
Close the socket and context.
"""
llm_logger.info("ZMQ client is closing connection...")
try:
if self.socket is not None and not self.socket.closed:
self.socket.setsockopt(zmq.LINGER, 0)
self.socket.close()
if self.context is not None:
self.context.term()
except Exception as e:
llm_logger.warning(f"ZMQ client failed to close connection - {e}")
return

View File

@@ -210,7 +210,7 @@ class ZmqIpcServer(ZmqServerBase):
return return
self.running = False self.running = False
llm_logger.info("Closing ZMQ connection...") llm_logger.info("ZMQ server is closing connection...")
try: try:
if self.socket is not None and not self.socket.closed: if self.socket is not None and not self.socket.closed:
self.socket.close() self.socket.close()
@@ -218,7 +218,7 @@ class ZmqIpcServer(ZmqServerBase):
self.context.term() self.context.term()
self._clear_ipc(self.file_name) self._clear_ipc(self.file_name)
except Exception as e: except Exception as e:
llm_logger.warning(f"Failed to close ZMQ connection - {e}") llm_logger.warning(f"ZMQ server failed to close connection - {e}")
return return
@@ -290,7 +290,7 @@ class ZmqTcpServer(ZmqServerBase):
return return
self.running = False self.running = False
llm_logger.info("Closing ZMQ connection...") llm_logger.info("ZMQ server is closing connection...")
try: try:
if self.socket is not None and not self.socket.closed: if self.socket is not None and not self.socket.closed:
self.socket.close() self.socket.close()
@@ -298,5 +298,5 @@ class ZmqTcpServer(ZmqServerBase):
self.context.term() self.context.term()
except Exception as e: except Exception as e:
llm_logger.warning(f"Failed to close ZMQ connection - {e}") llm_logger.warning(f"ZMQ server failed to close connection - {e}")
return return