Dans mon programme socket Python, j'ai parfois besoin de l'interrompre avec Ctrl-C. Lorsque je fais cela, cela ferme la connexion en utilisant socket.close()
.
Cependant, lorsque j'essaie de le rouvrir, je dois attendre ce qui semble être une minute avant de pouvoir me connecter à nouveau. Comment fermer correctement une prise? Ou est-ce prévu?
python
sockets
connection
errno
skylerl
la source
la source
la source
Si vous utilisez un TCPServer, UDPServer ou leurs sous-classes dans le module SocketServer, vous pouvez définir cette variable de classe (avant d'instancier un serveur):
(via SocketServer.ThreadingTCPServer - Impossible de se lier à l'adresse après le redémarrage du programme )
Cela amène init (constructeur) à:
la source
parce que vous essayez d'exécuter le service sur le même port qui est déjà en cours d'exécution.
quelque temps, cela se produit parce que votre service n'est pas arrêté dans la pile de processus. tu dois les tuer
pas besoin d'installer quoi que ce soit ici, c'est la commande d'une ligne pour tuer tous les processus python en cours d'exécution.
pour OS basé sur Linux:
Frapper:
Poisson:
la source
Rien n'a fonctionné pour moi à part exécuter un sous-processus avec cette commande, avant d'appeler
HTTPServer(('', 443), myHandler)
:Bien sûr, ce n'est que pour les OS de type Linux!
la source
Une solution simple qui a fonctionné pour moi est de fermer le terminal et de le redémarrer.
la source
Tout d'abord, trouvez l'ID de processus python à l'aide de cette commande
Vous obtiendrez un numéro pid en nommant votre processus python sur la deuxième colonne
Puis tuez le processus en utilisant cette commande
la source
Vous avez la même erreur:
étapes suivies:
1 - utilisé
$ ps -fA | grep python
2 - tué tout le processus
3 - terminal fermé
4 - relancé et lancé l'application (mkchromecast).
5 - n'a pas reçu ce message d'erreur.
J'ai un autre problème. suivi de cela.
la source
exécuter la commande
exemple pour flacon:
fuser -k 5000/tcp
Souvenez-vous également que cette erreur survient lorsque vous interceptez avec ctrl + z. donc pour terminer, utilisez ctrl + c
la source