python socket.error: [Errno 98] Bereits verwendete Adresse [geschlossen]

76

Wenn ich application.py einrichte, wird angezeigt, dass socket.error: [Errno 98] Adresse bereits verwendet wird.

Traceback (most recent call last):
File "application.py", line 121, in <module>
main()
File "application.py", line 117, in main
http_server.listen(options.port)
File "/usr/local/lib/python2.7/site-packages/tornado-3.1-py2.7.egg/tornado/tcpserver.py", line 117, in listen
sockets = bind_sockets(port, address=address)
File "/usr/local/lib/python2.7/site-packages/tornado-3.1-py2.7.egg/tornado/netutil.py", line 90, in bind_sockets
sock.bind(sockaddr)
File "/usr/local/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 98] Address already in use
Emuu
quelle
Sie müssen weitere Informationen zur Anwendung bereitstellen.
Radio
1
Wenn Sie die Adresse kennen, die verwendet werden soll, können Sie herausfinden, mit welcher Adresse diese Adresse noch gespeichert ist netstat.
Luke
Ändern Sie den addressund geben Sie uns bitte mehr Code.
Victor Castillo Torres
31
sudo lsof -t -i tcp:8000 | xargs kill -9
Wadadaaa

Antworten:

132

Es gibt offensichtlich einen anderen Prozess, der den Port abhört. Sie können diesen Vorgang mit dem folgenden Befehl herausfinden:

$ lsof -i :8000

oder ändern Sie den Port Ihrer Tornado-App. Tornados Fehlerinfo nicht explizit dazu.

the5fire
quelle
1
Diese Antwort hat in meinem Fall nicht funktioniert, in dem ein Socket von der Python-Anwendung erstellt wird und die Anwendung erzwungen wird. Bitte folgen Sie dem Link und sehen Sie die Antwort von Ayoub Laaziz
Emmmphd
34
Arbeitete für mich mit sudound Port 5000 (für eine Flask-App), z. B. sudo lsof -i :5000um den Prozess zu erkennen, der auf dem Port lauscht, und dannsudo kill -9 <process_id>
Inverbis
4
Nachdem ich diesen Befehl (gerade sudo lsof -i :8000) ausgeführt habe, wird nichts angezeigt , aber es wird immer noch der gleiche Fehler angezeigt. :(
ytu
1
Ich benutze sudo hat nichts op gezeigt.
ScipioAfricanus
2
Wenn Sie mit diesem Problem konfrontiert sind und nichts von Ihnen kommt netstatoder lsofwenn Sie ein Skript testen / neu starten, das einen Aufruf ausführt socket.bind(), stellen Sie möglicherweise fest, dass die Adresse auch nach Beendigung des betreffenden Prozesses noch eine Weile verwendet wird: Überprüfen Sie diese Antwort .
EricLavault