Al mantener abierto un socket de cliente para enviar varios mensajes, ¿por qué el programa da un error cuando hay un gran retraso en los mensajes?

Hay un servidor que escucha las conexiones. El socket del cliente se conecta al servidor y llama asendall() varias veces en un bucle antes de cerrarlo. Sin embargo, si alguna iteración lleva un tiempo, hay unaConnectionAbortedError.

Hay un ciclo que va de 0 a 9, donde en cada iteración, hay unsendall() utilizando el socket del cliente. Para crear un retraso, agregué un bucle while ficticio que solo incrementa algunas variables.

La parte relevante del código del servidor

with socket.socket() as s:
    s.bind(('127.0.0.1', 65432))
    s.listen()

    while True:
        connection, address = s.accept()

        with connection:
            data = connection.recv(72)
            print('Client says "{}"'.format(data))

El código del cliente

with socket.socket() as s:
    s.connect((host, port))
    for i in range(10):
        s.sendall(bytes("message {}".format(i+1), encoding='utf-8'))

        if i+1 == 3:
            count = 0
            while count < 12000:
                count += 1

Un pequeño límite para contar en lawhile loop like 500 funciona bien. Sin embargo, algo por encima de 5000 parece causar un error. No me queda claro por qué dan resultados diferentes.

Respuestas a la pregunta(2)

Su respuesta a la pregunta