Apagado del servidor Python 3 basado en servidor de sockets

Estoy trabajando en un servidor "simple" usando un servidor de sockets roscado en Python 3.

Estoy pasando por muchos problemas para implementarapagar para esto. El siguiente código que encontré en Internet y el apagado funciona inicialmente, pero deja de funcionar después de enviar algunos comandos del cliente a través de telnet. Algunas investigaciones me dicen que se cuelga en threading._shutdown ... threading._wait_for_tstate_lock pero hasta ahora esto no suena.

Mi investigación me dice que hay ~ 42 soluciones, marcos, etc. diferentes sobre cómo hacer esto en diferentes versiones de Python. Hasta ahora no pude encontrar un enfoque de trabajo para python3. P.ej. amotelnetsrv (https://pypi.python.org/pypi/telnetsrv/0.4) para python 2.7 (usa greenlets de gevent) pero este no funciona para python 3. Entonces, si hay un enfoque más pitón, std lib o algo que funcione de manera confiable, ¡me encantaría saberlo!

Mi apuesta actualmente es con el servidor de sockets, pero aún no pude encontrar la forma de lidiar con el servidor colgado. Eliminé todas las declaraciones de registro y la mayoría de las funciones para poder publicar este servidor mínimo que expone el problema:

# -*- coding: utf-8 -*-
import socketserver
import threading

SERVER = None


def shutdown_cmd(request):
    global SERVER
    request.send(bytes('server shutdown requested\n', 'utf-8'))
    request.close()
    SERVER.shutdown()
    print('after shutdown!!')
    #SERVER.server_close()


class service(socketserver.BaseRequestHandler):
    def handle(self):
        while True:
            try:
                msg = str(self.request.recv(1024).strip(), 'utf-8')
                if msg == 'shutdown':
                    shutdown_cmd(msg, self.request)
                else:
                    self.request.send(bytes("You said '{}'\n".format(msg), "utf-8"))
            except Exception as e:
                pass


class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
    pass


def run():
    global SERVER
    SERVER = ThreadedTCPServer(('', 1520), service)
    server_thread = threading.Thread(target=SERVER.serve_forever)
    server_thread.daemon = True
    server_thread.start()
    input("Press enter to shutdown")
    SERVER.shutdown()


if __name__ == '__main__':
    run()

Sería genial poder detener el servidor desde el controlador también (ver shutdown_cmd)

Respuestas a la pregunta(3)

Su respuesta a la pregunta