Cómo hacer un servidor de socket multiproceso simple en Python que recuerde a los clientes

¿Cómo hago un servidor de eco Python simple que recuerde a los clientes y no cree un nuevo socket para cada solicitud? Debe ser compatible con el acceso concurrente. Quiero poder conectarme una vez y enviar y recibir datos continuamente usando este cliente o 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)

Es decir. con el servidor ejecutándose en el puerto 50000, utilizando el cliente anterior, quiero poder hacer esto:

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

Respuestas a la pregunta(1)

Su respuesta a la pregunta