>> I get an other impression from the statements “self._threads.append(t)” >> (process_request) >> and “thread.join()” (server_close). > > Okay -- v3.7 has added more logic that didn't exist in the v3.5 code > I was examining... (block_on_close is new).
Thanks for such a version comparison. > However, I need to point out that this logic is part of server_close(), > which is not the same as shutdown(). You have been calling shutdown() which > only ends the loop accepting new connections, but leaves any in-process > threads to finish handling their requests. > > server_close() needs to be called by your code, I would expect AFTER > calling shutdown() to stop accepting new requests (and starting new threads > which may not be in the list that the close is trying to join). Should this aspect be taken into account by the code specification “with server:”? > And after calling server_close() you will not be able to simply "restart" the > server > -- you must go through the entire server initialization process > (ie: create a whole new server instance). This should be finally achieved by the implementation of my method “perform_command”. I hope that corresponding data processing can be cleanly repeated then as desired for test purposes. Regards, Markus -- https://mail.python.org/mailman/listinfo/python-list