使用pysftp,如何为连接指定超时值?

时间:2019-11-27 02:34:11

标签: python sftp pysftp

使用pysftp,我了解了在连接后如何为任何命令设置超时,但是我没有看到如何为连接本身设置超时。我觉得我在某处缺少什么。只是尝试一下,我尝试将timeout=3添加到Connection方法中并遇到错误,然后尝试使用cnopts.timeout=3却什么也没做。出于记录,我在Windows上使用Python 3,如果有影响的话。

如果有帮助,可以尝试以下一些简单的测试代码。 (按原样,连接会在30秒后超时。)

import pysftp

print("\n"*25)
cnopts=pysftp.CnOpts()
# - I know this next line is insecure, it's just for this test program.
cnopts.hostkeys = None

print('Connecting...')
# - 8.8.8.8 is Google's public DNS server. It doesn't respond to sftp requests at all,
# - so it's a good test case for how long a connection timeout takes.
with pysftp.Connection('8.8.8.8', username='anonymous', password='password',
                    cnopts=cnopts) as SFTP:
    print("Wait, how did you get this far?")
print("Done.")

2 个答案:

答案 0 :(得分:0)

看起来pysftp不允许设置连接超时。

您可以直接使用Paramiko(pysftp is just a wrapper around Paramiko)。

Paramiko SSHClient.connect方法具有超时参数。

答案 1 :(得分:-1)

您可以执行以下操作:

Connection.timeout (35000)