python socket.error: [Errno 98] Адреса вже використовується [закрита]


76

коли я встановлюю application.py, він показує, що socket.error: [Errno 98] Адреса вже використовується.

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

Вам потрібно надати більше інформації про програму.
Радіо

1
Якщо ви знаєте адресу, яку він намагається використовувати, тоді ви можете дізнатися, з чим ще тримається ця адреса netstat.
Лука

Змініть addressі надайте нам більше коду, будь ласка.
Victor Castillo Torres


33
sudo lsof -t -i tcp:8000 | xargs kill -9
wadadaaa

Відповіді:


135

Очевидно, є інший процес прослуховування в порту. Ви можете дізнатися цей процес, використовуючи таку команду:

$ lsof -i :8000

або змінити порт програми для торнадо. Інформація про помилку торнадо не явна .


1
Ця відповідь не спрацювала в моєму випадку, коли сокет створюється додатком Python, а додаток примусово виходить. Будь ласка, перейдіть за посиланням і перегляньте відповідь ayoub laaziz
emmmphd

35
Працював у мене з sudoта портом 5000 (для програми Flask), наприклад, sudo lsof -i :5000для виявлення процесу прослуховування на порту, а потімsudo kill -9 <process_id>
Inverbis

4
Після того, як я виконаю цю команду (навіть sudo lsof -i :8000), нічого не відображається , але все одно я отримую ту саму помилку. :(
ytu

1
Я використовую sudo не показував нічого op.
ScipioAfricanus

3
Для тих, хто стикається з цією проблемою, нічого не з’являється netstatабо lsof, якщо ви тестуєте / перезапускаєте скрипт, який здійснює виклик socket.bind(), ви можете виявити, що адреса може все ще використовуватися деякий час, навіть після вбивства залученого процесу: перевірте цю відповідь .
EricLavault
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.