如果服务器暂时不可用,则无法从客户端重新启动套接字连接

时间:2012-06-25 13:24:59

标签: python sockets ssh-tunnel graphite

我正在运行Graphite服务器来监控远程位置的仪器。我有一个“永久”的ssh隧道从我的服务器(爱好autossh)到机器映射他们的本地端口到我的服务器的本地端口。这很好用,数据来自没有任何硬件。然而,我们使用片状卫星连接到站点,这些站点相当频繁地下降。我正在运行python的仪器上运行“数据爬虫”并使用套接字将数据包发送到Graphite服务器。问题是,如果链接暂时中断(或服务器重新启动,主要用于测试),我无法重新建立与服务器的连接。我捕获错误,然后运行socket.close(),然后重新打开,但我只是无法重新建立连接。如果我退出python程序并重新启动它,连接就好了。我有什么想法可以“刷新”我的套接字连接?

1 个答案:

答案 0 :(得分:0)

如果没有代码示例,很难正确回答这个问题。但是,听起来您可能正在尝试重复使用已关闭的socket,这是不可能的。

如果套接字已关闭(或出现错误),则必须使用新的套接字对象重新创建新连接。为此,远程服务器必须能够在其accept()循环中处理多个客户端连接。