Servidor multicliente multi-cliente en python

Estoy escribiendo un servidor multihilo y multicliente en python. Varios usuarios pueden conectarse a él con telnet y básicamente usarlo como un servidor de chat. Puedo conectarme con dos clientes a través de telnet, pero me encuentro con los dos problemas siguientes:

El primer cliente que envía un mensaje se desconecta inmediatamente. El otro cliente no recibe el mensaje enviado por el primer cliente.

Código de 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, escuché a unholysampler y ahora tengo esto. Ahora puedo conectarme con ambos clientes y escribir mensajes, pero no se envían / reciben (no puedo decir cuál).

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,))

Respuestas a la pregunta(3)

Su respuesta a la pregunta