Python Paramiko记录混乱的STFP连接



我正在使用paramiko打开SFTP连接以访问远程文件。我以下所有代码在内置功能中似乎只有在我没有启用paramiko的日志记录时工作:

      paramiko.util.log_to_file( 'paramiko.log' )

因此,当我在文件中没有上述代码行时,以下代码有效:

        client = paramiko.SSHClient()
        client.load_system_host_keys()
        client.set_missing_host_key_policy( paramiko.AutoAddPolicy() )
        client.connect( hostname,user, password)
        sftp = client.open_sftp()
        file = sftp.open( fpath, mode='r', bufsize=1 )

否则,python将挂在此行上 client.connect(hostName,user,passwere),并将其写入stderr日志,就像疯狂一样,最终杀死了我的代码正在运行的VM。

特别是Paramiko挂在这条线上:

t.start_client()

在client.connect方法中。Paramiko日志中没有任何有用的东西,STDERR充满了没有描述或追溯的错误。

在研究这个问题时,我遇到了"有一个单个导入锁,因此当孩子线程尝试另一个导入时,它可以无限期地阻止它"我如何确保打开SFTP连接的代码永远不会被阻止?

这有点远,但是我对logging使用导致僵局的线程有问题。我无法跟踪确切的问题(尽管我怀疑它可能因使用subprocess而加剧了;但是我确实通过禁用logging模块的线程支持来解决它。

在激活记录之前先尝试一下:

import logging
logging.thread = None

我有兴趣知道这是否解决了您的问题。

最新更新