python socket.error:[Errno 98]地址已被使用

emu*_*muu 55 python python-2.7

当我设置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
Run Code Online (Sandbox Code Playgroud)

小智 104

显然有另一个进程监听端口.您可以使用以下命令找到该过程:

$ lsof -i :8000
Run Code Online (Sandbox Code Playgroud)

或更改您的龙卷风应用程序的端口.tornado的错误信息不明确地说明这一点.

  • 使用`sudo`和端口5000(对于Flask应用程序)为我工作,例如`sudo lsof -i:5000`来检测侦听端口的进程,然后`sudo kill -9 <process_id>` (21认同)
  • 对于那些面临这个问题但“netstat”或“lsof”没有任何结果的人,如果您正在测试/重新启动一个调用 [`socket.bind()`](https://docs.python.org /3/library/socket.html#socket.socket.bind),您可能会发现即使在杀死相关进程后该地址可能仍在使用一段时间:查看此[answer](https://stackoverflow.com /a/4466035/2529954)。 (7认同)
  • 执行此命令后甚至没有显示任何内容(甚至是`sudo lsof -i:8000`),但我仍然遇到同样的错误.:( (4认同)
  • 这个答案在我的情况下不起作用,其中套接字是由 Python 应用程序创建的,并且应用程序被强制退出。请点击链接并查看 ayoub laaziz 的回答 (2认同)