paramiko挂在意外的连接下降

时间:2014-12-23 13:31:14

标签: python paramiko

我使用paramiko与服务器建立SSH连接。如果服务器不可用(例如意外关闭)并且超时实际无效,exec_command将永远挂起。 我也试过了set_keepalive,但它也没有用。据我所知,从源代码中为服务器实现了keepalive。它只是定期向服务器发送一些内容以保持连接活动,但不检查客户端的任何读取超时。

有没有办法处理意外的连接丢弃?也许你可以建议一些比paramiko更好的东西或我可以解决的方法?

我也尝试将TCP级别设置为活着,但它没有多大帮助。

sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
sock.setsockopt(socket.SOL_TCP, socket.TCP_KEEPIDLE, 10)
sock.setsockopt(socket.SOL_TCP, socket.TCP_KEEPINTVL, 10)
sock.setsockopt(socket.SOL_TCP, socket.TCP_KEEPCNT, 3)

1 个答案:

答案 0 :(得分:0)

如果您希望超时工作,则可能需要使用

import socket
socket.settimeout(<timeoutinseconds>)

这应该设置超时,以便paramiko尊重它。然后,如果达到超时,它应该抛出一个你可以处理的异常