使用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.")
答案 0 :(得分:0)
看起来pysftp不允许设置连接超时。
您可以直接使用Paramiko(pysftp is just a wrapper around Paramiko)。
Paramiko SSHClient.connect
方法具有超时参数。
答案 1 :(得分:-1)
您可以执行以下操作:
Connection.timeout (35000)