【问题标题】:python socket.error: [Errno 98] Address already in use [closed]python socket.error:[Errno 98]地址已在使用中[关闭]
【发布时间】:2013-07-22 05:07:27
【问题描述】:

当我设置 application.py 时,它显示 socket.error: [Errno 98] Address already in use.

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

【问题讨论】:

  • 您需要提供有关该应用程序的更多信息。
  • 如果您知道它正在尝试使用的地址,那么您可以通过netstat 找出持有该地址的其他内容。
  • 请更改address 并为我们提供更多代码。
  • sudo lsof -t -i tcp:8000 | xargs kill -9

标签: python python-2.7


【解决方案1】:

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

$ lsof -i :8000

或更改您的龙卷风应用程序的端口。龙卷风的错误信息不是明确的。

【讨论】:

  • 这个答案在我的情况下不起作用,即 Python 应用程序创建了一个套接字并且应用程序被强制退出。请点击链接并查看 ayoub laaziz 的答案
  • 使用 sudo 和端口 5000(用于 Flask 应用程序)为我工作,例如sudo lsof -i :5000检测监听端口的进程,然后sudo kill -9 &lt;process_id&gt;
  • 执行此命令后没有任何显示(即使是sudo lsof -i :8000),但我仍然收到相同的错误。 :(
  • 我正在使用 sudo 没有显示任何操作。
  • 对于那些在netstatlsof 没有任何消息的人,如果您正在测试/重新启动一个调用socket.bind() 的脚本,您可能会发现该地址可能即使在杀死所涉及的进程后仍然可以使用一段时间:checkout this answer.
猜你喜欢
  • 2020-04-21
  • 1970-01-01
  • 2011-05-26
  • 1970-01-01
  • 2013-10-04
  • 1970-01-01
相关资源
最近更新 更多