Como criar um servidor de soquete multithread simples em Python que se lembra de clientes

Como faço para criar um servidor de eco Python simples que se lembre dos clientes e não crie um novo soquete para cada solicitação? Deve ser capaz de oferecer suporte ao acesso simultâneo. Quero poder conectar-me uma vez e enviar e receber dados continuamente usando este cliente ou similar:

import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = raw_input("Server hostname or ip? ")
port = input("Server port? ")
sock.connect((host,port))
while True:
    data = raw_input("message: ")
    sock.send(data)
    print "response: ", sock.recv(1024)

I.e. com o servidor em execução na porta 50000, usando o cliente acima, desejo poder fazer isso:

me@mine:~$ client.py
Server hostname or ip? localhost
Server Port? 50000
message: testa
response: testa
message: testb
response: testb
message: testc
response: testc

questionAnswers(1)

yourAnswerToTheQuestion