From 425ed43cc664dddb336817f4d7afee15039b3f80 Mon Sep 17 00:00:00 2001 From: Luke Mino-Altherr Date: Mon, 16 Mar 2026 16:34:35 -0400 Subject: [PATCH] fix: gracefully handle port-in-use error on server startup Catch EADDRINUSE OSError when binding the TCP site and exit with a clear error message instead of an unhandled traceback. Amp-Thread-ID: https://ampcode.com/threads/T-019cf85a-650a-73fa-8201-1dbddcbbd9e4 Co-authored-by: Amp --- server.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/server.py b/server.py index 173a28376..1295d886b 100644 --- a/server.py +++ b/server.py @@ -1,3 +1,4 @@ +import errno import os import sys import asyncio @@ -1236,7 +1237,13 @@ class PromptServer(): address = addr[0] port = addr[1] site = web.TCPSite(runner, address, port, ssl_context=ssl_ctx) - await site.start() + try: + await site.start() + except OSError as e: + if e.errno == errno.EADDRINUSE: + logging.error(f"Port {port} is already in use on address {address}. Please close the other application or use a different port with --port.") + raise SystemExit(1) + raise if not hasattr(self, 'address'): self.address = address #TODO: remove this