From 7420cbb8903906594a94b3f4cced11c39701ee95 Mon Sep 17 00:00:00 2001 From: burgerkingeater Date: Mon, 1 Dec 2025 17:31:18 -0800 Subject: [PATCH] add reusable port --- verl/single_controller/base/worker.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/verl/single_controller/base/worker.py b/verl/single_controller/base/worker.py index 4b82f4e1f3d..d339b51c132 100644 --- a/verl/single_controller/base/worker.py +++ b/verl/single_controller/base/worker.py @@ -61,6 +61,15 @@ def _get_free_port(): sock.bind(("", 0)) return sock.getsockname()[1] + @staticmethod + def _get_reusable_free_port(): + listen_sock: socket.socket = socket.socket() + listen_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + listen_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1) + listen_sock.bind(("", 0)) + _, port, *_ = listen_sock.getsockname() + return port + def get_availale_master_addr_port(self): warnings.warn( "This function is deprecated due to typo in name; Please use `get_available_master_addr_port` instead", @@ -71,6 +80,9 @@ def get_availale_master_addr_port(self): def get_available_master_addr_port(self): return self._get_node_ip().strip("[]"), str(self._get_free_port()) + def get_available_master_addr_reusable_port(self): + return self._get_node_ip().strip("[]"), str(self._get_reusable_free_port()) + # we assume that in each WorkerGroup, there is a Master Worker class Worker(WorkerHelper):