当前位置: 首页 > 面试题库 >

SocketServer.ThreadingTCPServer-程序重新启动后无法绑定到地址

濮阳宜
2023-03-14
问题内容

作为无法在套接字程序崩溃后绑定地址的后续措施,我的程序重启后我收到此错误:

socket.error:[Errno 98]地址已在使用中

在这种特殊情况下,程序将直接启动其自己的线程化TCP服务器,而不是直接使用套接字:

httpd = SocketServer.ThreadingTCPServer(('localhost', port), CustomHandler)
httpd.serve_forever()

如何解决此错误消息?


问题答案:

在这种特定情况下,.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)可以在allow_reuse_address设置选项时从TCPServer类调用。因此,我能够按以下方式解决它:

httpd = SocketServer.ThreadingTCPServer(('localhost', port), CustomHandler, False) # Do not automatically bind
httpd.allow_reuse_address = True # Prevent 'cannot bind to address' errors on restart
httpd.server_bind()     # Manually bind, to support allow_reuse_address
httpd.server_activate() # (see above comment)
httpd.serve_forever()

无论如何,以为这可能有用。该解决方案在Python 3.0中将略有不同



 类似资料:
  • 问题内容: 如果我在中保留注释,它将像正常一样开始(返回预期结果)。 但是,如果我设置了它,那么它会说OK,但是elasticsearch的状态是。 在这种情况下我做错了什么? 系统:Ubuntu 14.04 LTS 更新:通过将其绑定到进行修复。 问题答案: 更新:通过将其绑定到0.0.0.0进行了修复。

  • 我的博客在Ghost上运行,并在赫洛库托管。它工作了几个星期,但现在,没有进行任何更改,它就崩溃了。错误: 但是我的配置文件与往常一样: 甚至尝试重新启动dyno并部署了我的博客的新版本,但没有成功。仍然是相同的错误。 有什么建议吗?

  • 问题内容: 我的日食没有启动,因为我的计算机有点死机了,所以我不得不强制重新启动它。当我不得不重新启动时,Eclipse是打开的,我相信这很可能是原因。我不知道该如何解决。每当我尝试打开它时,它都会告诉我检查工作区中的.log文件,并显示: http://paste.strictfp.com/26579 而且我不知道如何解决它。请帮忙? 问题答案: 您缺少 第125行的 类,您必须重新安装才能解决

  • 我正在处理一个spring boot应用程序,我想把从2.9.10.2升级到2.10.2。下面是我的pom.xml片段和升级依赖项后得到的错误: pom.xml: null

  • 我希望容器在计算机重新启动后自动启动,所以我使用'--restart=always'标志,但它并没有像我预期的那样运行。当我重新启动系统时,容器没有启动。 docker日志信息 添加docker ps-a message,$docker ps-a CONTAINER ID IMAGE命令CREATED STATUS PORTS NAMES a1f4d5471b0a mysql:8.0“docker

  • 我有一个主要/次要mongodb集群,即server1和Server2。 当我杀死主server1以模拟故障时,server2在几秒钟内变成主Server,使用java驱动程序访问mongo的应用程序开始使用新的主server2。 当我重新启动server1时,它在几秒钟内恢复了它的主要角色,但随后我的应用程序,而不是连接到server1,仍然尝试连接到server2,并且,由于它现在处于次要状态