【问题标题】:Python paramiko logging messes up stfp connectionPython paramiko 日志记录弄乱了 stfp 连接
【发布时间】:2012-10-18 15:34:09
【问题描述】:

我正在使用 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,password) 并疯狂地写入 stderr 日志,最终杀死运行我的代码的 VM。

具体 paramiko 挂在这一行:

t.start_client()

在 client.connect 方法中。 paramiko 日志中没有任何有用的信息,stderr 充满了没有描述或回溯的错误。

研究这个问题时我遇到了“只有一个导入锁可用,所以当子线程尝试另一个导入时,它可以无限期地阻止它”如何确保打开 sftp 连接的代码永远不会被阻止?

【问题讨论】:

  • 首先,当您的脚本中没有实例化 self._client 时,您将引用它。你的实际代码是什么?帕拉米科挂起的原因可能有无数个。您正在通过密码连接,并且您没有明确指定look_for_keys,这意味着它设置为 True。这可能会导致AuthHandler() 中的身份验证问题。尝试将look_for_keys=False 添加到client.connect()
  • 另外,如果您认为log_to_file 所做的事情有误。如果您查看actual code,它会输出正在发生的步骤。如果引发异常,则会引发异常。
  • 试过你的建议-look_for_keys 不能解决问题

标签: python paramiko


【解决方案1】:

这有点远,但我遇到了logging 使用线程导致死锁的问题。我无法找到确切的问题(尽管我怀疑使用subprocess 可能会加剧问题;但我确实通过禁用logging 模块的线程支持来解决它。

在激活日志记录之前试试这个:

import logging
logging.thread = None

我很想知道这是否能解决您的问题。

【讨论】:

  • 感谢您的建议,不幸的是这对我不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-23
  • 1970-01-01
  • 1970-01-01
  • 2015-02-19
  • 2014-12-25
  • 2012-08-02
相关资源
最近更新 更多