Issue #23254: Document how to close the TCPServer listening socket.

Patch from Martin Panter.
This commit is contained in:
Robert Collins 2015-07-29 12:52:40 +12:00
parent 54d361fd86
commit 1ee9283254
3 changed files with 15 additions and 2 deletions

View File

@ -33,9 +33,10 @@ Creating a server requires several steps. First, you must create a request
handler class by subclassing the :class:`BaseRequestHandler` class and
overriding its :meth:`handle` method; this method will process incoming
requests. Second, you must instantiate one of the server classes, passing it
the server's address and the request handler class. Finally, call the
the server's address and the request handler class. Then call the
:meth:`handle_request` or :meth:`serve_forever` method of the server object to
process one or many requests.
process one or many requests. Finally, call :meth:`~BaseServer.server_close`
to close the socket.
When inheriting from :class:`ThreadingMixIn` for threaded connection behavior,
you should explicitly declare how you want your threads to behave on an abrupt
@ -177,6 +178,13 @@ Server Objects
Tell the :meth:`serve_forever` loop to stop and wait until it does.
.. method:: BaseServer.server_close()
Clean up the server. May be overridden.
.. versionadded:: 2.6
.. attribute:: BaseServer.address_family
The family of protocols to which the server's socket belongs.
@ -547,6 +555,7 @@ An example for the :class:`ThreadingMixIn` class::
client(ip, port, "Hello World 3")
server.shutdown()
server.server_close()
The output of the example should look something like this::

View File

@ -144,6 +144,7 @@ class SocketServerTest(unittest.TestCase):
server.shutdown()
t.join()
server.server_close()
self.assertEqual(-1, server.socket.fileno())
if verbose: print("done")
def stream_examine(self, proto, addr):

View File

@ -66,6 +66,9 @@ Core and Builtins
Library
-------
- Issue #23254: Document how to close the TCPServer listening socket.
Patch from Martin Panter.
- Issue #19450: Update Windows builds to use SQLite 3.8.11.0
- Issue #23441: rcompleter now prints a tab character instead of displaying