Skip to content

Commit 22fb4b6

Browse files
Closing handler threads before accepter and after socket close
1 parent 7a64e68 commit 22fb4b6

1 file changed

Lines changed: 4 additions & 4 deletions

File tree

Lib/multiprocessing/managers.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ def __init__(self, registry, address, authkey, serializer):
164164
self.id_to_refcount = {}
165165
self.id_to_local_proxy_obj = {}
166166
self.mutex = threading.Lock()
167+
self._handler_threads = []
167168

168169
def serve_forever(self):
169170
'''
@@ -186,23 +187,22 @@ def serve_forever(self):
186187
util.debug('resetting stdout, stderr')
187188
sys.stdout = sys.__stdout__
188189
sys.stderr = sys.__stderr__
190+
for t in self._handler_threads:
191+
t.join()
189192
accepter.join()
190193
sys.exit(0)
191194

192195
def accepter(self):
193-
handler_threads = []
194196
while True and not self.stop_event.is_set():
195197
try:
196198
self.listener.settimeout(0.5)
197199
c = self.listener.accept()
198200
except OSError:
199201
continue
200202
t = threading.Thread(target=self.handle_request, args=(c,))
201-
handler_threads.append(t)
203+
self._handler_threads.append(t)
202204
t.daemon = True
203205
t.start()
204-
for t in handler_threads:
205-
t.join()
206206

207207
def _handle_request(self, c):
208208
request = None

0 commit comments

Comments
 (0)