You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In earlier versions of Python all the way to 3.13, it would not allow a server to listen on a port that has already been used, and rightfully so.
$ python -m http.server 8000
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
# Trying to start the second server on the same port
$ python -m http.server 8000
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/usr/lib/python3.11/http/server.py", line 1309, in<module>
test(
File "/usr/lib/python3.11/http/server.py", line 1256, intest
with ServerClass(addr, HandlerClass) as httpd:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/socketserver.py", line 456, in __init__
self.server_bind()
File "/usr/lib/python3.11/http/server.py", line 1303, in server_bind
returnsuper().server_bind()
^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/http/server.py", line 136, in server_bind
socketserver.TCPServer.server_bind(self)
File "/usr/lib/python3.11/socketserver.py", line 472, in server_bind
self.socket.bind(self.server_address)
OSError: [Errno 98] Address already in use
But in Python 3.14.0a2, the second command would also start a server without exception. Is that expected?
CPython versions tested on:
3.14
Operating systems tested on:
Linux
The text was updated successfully, but these errors were encountered:
I confirm this in the main. It seems, for two processes, the last started process - serves requests. If it's terminated - works the first.
At least, seems as a documentation issue for me (nothing in news).
Based on #120485 (comment) (thanks for the finding, @oskar-skog ), "the kernel may dispatch the request to different server process randomly", which is concerning.
Bug report
Bug description:
In earlier versions of Python all the way to 3.13, it would not allow a server to listen on a port that has already been used, and rightfully so.
But in Python 3.14.0a2, the second command would also start a server without exception. Is that expected?
CPython versions tested on:
3.14
Operating systems tested on:
Linux
The text was updated successfully, but these errors were encountered: