You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检查Paramiko SFTP客户端是否仍处于连接状态

检查Paramiko SFTP客户端的活跃状态

Paramiko没有提供直接判断SFTP客户端是否活跃的API,最可靠的方式是执行一个轻量的SFTP操作,通过是否抛出异常来验证连接状态——毕竟空闲过久的连接很可能被服务器主动断开。

方法一:通过轻量SFTP操作验证

可以调用stat('.')或listdir('.')这类几乎无开销的操作,若操作成功则说明连接正常,否则代表连接已失效:

def is_sftp_active(sftp):
    try:
        # 获取当前目录属性,轻量操作验证连接
        sftp.stat('.')
        return True
    except (EOFError, ConnectionResetError, OSError) as e:
        # 捕获连接断开相关的异常
        return False

方法二:结合SSH传输层状态检查

你也可以先检查底层SSH传输的活跃状态,但注意这只能判断SSH连接是否存活,无法保证SFTP会话本身正常,建议和SFTP操作验证配合使用:

def is_ssh_transport_active(ssh):
    transport = ssh.get_transport()
    return transport is not None and transport.is_active()

实际使用建议

  • 在每次执行重要SFTP操作前调用检查函数,若返回False,则重新创建SFTP客户端:
    if not is_sftp_active(self.sftp):
        self.sftp = self.ssh.open_sftp()
    
  • 若你的应用空闲时间较长(比如接近服务器超时阈值),可以定期执行检查并按需重连,避免操作失败。

内容的提问来源于stack exchange,提问作者chirag7jain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 16:51:37