No se puede enlazar a la dirección después de que el progtwig de socket falla

Si mi progtwig se bloquea antes de que se cierre un socket, la próxima vez que lo ejecute, aparece un error similar al siguiente;

socket.error: [Errno 48] Address already in use 

Cambiar el puerto soluciona el problema.

¿Hay alguna forma de evitar esto, y por qué sucede esto (cuando el progtwig sale, no se debe recolectar la basura y cerrarse)?

Use .setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) en su conector de escucha.

Una búsqueda de esos términos le dará muchas explicaciones de por qué esto es necesario. Básicamente, después de que su primer progtwig se cierre, el sistema operativo mantiene el zócalo de escucha anterior en un estado de apagado por TIME_WAIT . SO_REUSEADDR dice que desea utilizar el mismo puerto de escucha independientemente.

La mayoría de los sistemas operativos tardan hasta 2 minutos en cerrar el socket cuando el progtwig no lo cierra correctamente primero. He golpeado esto muchas veces con progtwigs en C que SEGFAULT (y no tengo que manejar) o similar.

Editar:
Gracias a ephemient por señalar RFC 793 (TCP) que define este tiempo de espera.

Otras personas que están recibiendo este error pueden hacerlo porque el puerto está en uso por otro proceso. Así que compruebe si el puerto está siendo utilizado por otros procesos y ejecute su progtwig en otro puerto o elimine los procesos de locking.