En mi programa de socket de Python, a veces necesito interrumpirlo con Ctrl-C. Cuando hago esto, cierra la conexión usando socket.close()
.
Sin embargo, cuando intento volver a abrirlo, tengo que esperar lo que parece un minuto antes de poder conectarme de nuevo. ¿Cómo se cierra correctamente un enchufe? ¿O es esto intencionado?
python
sockets
connection
errno
Skylerl
fuente
fuente
$ ps -fA | grep python 501 81211 12368 0 10:11PM ttys000 0:03.12 python -m SimpleHTTPServer $ kill 81211
fuente
Si usa un TCPServer, UDPServer o sus subclases en el módulo SocketServer, puede establecer esta variable de clase (antes de instanciar un servidor):
SocketServer.TCPServer.allow_reuse_address = True
(a través de SocketServer.ThreadingTCPServer - No se puede enlazar a la dirección después de reiniciar el programa )
Esto hace que init (constructor):
if self.allow_reuse_address: self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
fuente
porque está intentando ejecutar el servicio en el mismo puerto que ya se está ejecutando.
en algún momento sucede porque su servicio no se detiene en la pila de procesos. tienes que matarlos
no es necesario instalar nada aquí es el comando de una línea para matar todos los procesos de Python en ejecución.
para SO basado en Linux:
Intento:
kill -9 $(ps -A | grep python | awk '{print $1}')
Pescado:
kill -9 (ps -A | grep python | awk '{print $1}')
fuente
Una solución simple que funcionó para mí es cerrar la Terminal y reiniciarla.
fuente
Nada funcionó para mí, excepto ejecutar un subproceso con este comando, antes de llamar
HTTPServer(('', 443), myHandler)
:kill -9 $(lsof -ti tcp:443)
¡Por supuesto, esto es solo para sistemas operativos similares a Linux!
fuente
En primer lugar, busque el ID del proceso de Python usando este comando
Obtendrá un número pid al nombrar su proceso de Python en la segunda columna
Luego mata el proceso usando este comando
kill -9 pid
fuente
Obtuve el mismo error:
Pasos seguidos:
1 - usado
$ ps -fA | grep python
2 - Matado todo el proceso
3 - Terminal cerrado
4 - relanzado y lanzado la aplicación (mkchromecast).
5 - no recibí este mensaje de error.
Tengo otro problema. siguiendo eso.
fuente
ejecutar el comando
ejemplo de matraz:
fuser -k 5000/tcp
Además, recuerde que este error surge cuando intercala ctrl + z. así que para terminar use ctrl + c
fuente