ervidor multi-cliente multiencadeado em pyth

Estou escrevendo um servidor multithread e multi-client em python. Vários usuários podem se conectar a ele com o telnet e basicamente usá-lo como um servidor de bate-papo. Consigo me conectar com dois clientes através do telnet, mas me deparo com os dois problemas a seguir:

O primeiro cliente a enviar uma mensagem é desconectado imediatament O outro cliente não recebe a mensagem enviada pelo primeiro client

Código do servidor:

import os
import sys
import socket
import thread

port = 1941
global message
global lock
global file

def handler(connection):
    while 1:
            file = connection.makefile()
            file.flush()
            temp = file.readline()
            if temp == 'quit':
                break
            lock.acquire()
            message += temp
            lock.release()
            file.write(message)
    file.close()

acceptor = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
acceptor.bind(('', port))
acceptor.listen(10)
lock = thread.allocate_lock()

while 1:
    connection, addr = acceptor.accept()
    thread.start_new_thread(handler, (connection,))

Ok, eu ouvi unholysampler e agora eu tenho isso. Agora consigo conectar-me aos dois clientes e digitar mensagens, mas elas não estão sendo enviadas / recebidas (não sei qual

import os
import sys
import socket
import thread

port = 1953

def handler(connection):
    global message
    global filelist
    filelist = []
    file = connection.makefile()
    file.flush()
    filelist.append(file)
    message = ''
    while 1:
        i = 0
        while i < (len(filelist)):
            filelist[i].flush()
            temp = filelist[i].readline()

            if temp == 'quit':
                break

            with lock:
                message += temp

            i = i + 1
    file.close()

global lock
acceptor = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
acceptor.bind(('', port))
acceptor.listen(10)
lock = thread.allocate_lock()

while 1:
    connection, addr = acceptor.accept()
    thread.start_new_thread(handler, (connection,))

questionAnswers(3)

yourAnswerToTheQuestion