From 59001267c3c3822598f4ff4903a309ba6543984f Mon Sep 17 00:00:00 2001 From: Mohammad Miadh Angkad <176301910+mmangkad@users.noreply.github.com> Date: Thu, 18 Jun 2026 15:34:00 +0800 Subject: [PATCH] Fix bench serving base-url-only runs (#28617) Co-authored-by: shuwenn <47200617+alphabetc1@users.noreply.github.com> --- python/sglang/bench_serving.py | 7 +++---- python/sglang/srt/utils/network.py | 9 +++++++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/python/sglang/bench_serving.py b/python/sglang/bench_serving.py index 0df8e04df..2cbc42e37 100644 --- a/python/sglang/bench_serving.py +++ b/python/sglang/bench_serving.py @@ -48,7 +48,7 @@ from sglang.benchmark.utils import ( set_ulimit, ) from sglang.srt.disaggregation.utils import FAKE_BOOTSTRAP_HOST -from sglang.srt.utils.network import NetworkAddress, resolve_base_url +from sglang.srt.utils.network import resolve_base_url, resolve_host_port _ROUTING_KEY_HEADER = "X-SMG-Routing-Key" @@ -1941,15 +1941,14 @@ def run_benchmark(args_: argparse.Namespace): }.get(args.backend, 30000) # Base URL the client sends to: --base-url if given, else http://host:port - # (IPv6-correct). NetworkAddress is also kept for gserver's host:port form. + # (IPv6-correct). gserver uses the scheme-less host:port form instead. base_url = resolve_base_url(args.base_url, args.host, args.port) - _na = NetworkAddress(args.host, args.port) model_url = f"{base_url}/v1/models" if args.backend == "gserver": # gRPC server takes a bare host:port, not an http URL. - api_url = args.base_url if args.base_url else _na.to_host_port_str() + api_url = resolve_host_port(args.base_url, args.host, args.port) args.model = args.model or "default" else: api_url = f"{base_url}{_BACKEND_API_PATHS[args.backend]}" diff --git a/python/sglang/srt/utils/network.py b/python/sglang/srt/utils/network.py index e968da56f..aac99aa93 100644 --- a/python/sglang/srt/utils/network.py +++ b/python/sglang/srt/utils/network.py @@ -551,3 +551,12 @@ def resolve_base_url(base_url: str, host: str, port: int) -> str: if base_url: return base_url return NetworkAddress(host, port).to_url() + + +def resolve_host_port(base_url: str, host: str, port: int) -> str: + """Like :func:`resolve_base_url` but returns the scheme-less ``host:port`` + form (for gRPC-style endpoints): ``base_url`` if set, else ``host:port`` + (IPv6-correct via :class:`NetworkAddress`).""" + if base_url: + return base_url + return NetworkAddress(host, port).to_host_port_str()