mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
bpo-43867: multiprocessing Server catchs SystemExit (GH-25441)
The multiprocessing Server class now explicitly catchs SystemExit and closes the client connection in this case. It happens when the Server.serve_client() method reachs the end of file (EOF).
This commit is contained in:
parent
62ec638648
commit
7c29ae1f05
2 changed files with 17 additions and 6 deletions
|
@ -192,11 +192,8 @@ class Server(object):
|
|||
t.daemon = True
|
||||
t.start()
|
||||
|
||||
def handle_request(self, c):
|
||||
'''
|
||||
Handle a new connection
|
||||
'''
|
||||
funcname = result = request = None
|
||||
def _handle_request(self, c):
|
||||
request = None
|
||||
try:
|
||||
connection.deliver_challenge(c, self.authkey)
|
||||
connection.answer_challenge(c, self.authkey)
|
||||
|
@ -213,6 +210,7 @@ class Server(object):
|
|||
msg = ('#TRACEBACK', format_exc())
|
||||
else:
|
||||
msg = ('#RETURN', result)
|
||||
|
||||
try:
|
||||
c.send(msg)
|
||||
except Exception as e:
|
||||
|
@ -224,7 +222,17 @@ class Server(object):
|
|||
util.info(' ... request was %r', request)
|
||||
util.info(' ... exception was %r', e)
|
||||
|
||||
c.close()
|
||||
def handle_request(self, conn):
|
||||
'''
|
||||
Handle a new connection
|
||||
'''
|
||||
try:
|
||||
self._handle_request(conn)
|
||||
except SystemExit:
|
||||
# Server.serve_client() calls sys.exit(0) on EOF
|
||||
pass
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
def serve_client(self, conn):
|
||||
'''
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
The :mod:`multiprocessing` ``Server`` class now explicitly catchs
|
||||
:exc:`SystemExit` and closes the client connection in this case. It happens
|
||||
when the ``Server.serve_client()`` method reachs the end of file (EOF).
|
Loading…
Add table
Add a link
Reference in a new issue