美文网首页
Python如何优雅的关闭连接对象

Python如何优雅的关闭连接对象

作者: 越大大雨天 | 来源:发表于2020-02-04 13:59 被阅读0次

在使用Python连接数据库、sftp等时,我们需要在连接使用完成后或执行重连时关闭连接对象以回收资源。那么该如何优雅的来关闭这些连接对象或游标呢?

以SFTP连接为例做一个示例:

import paramiko

try:
    ssh_conn = paramiko.Transport((host, port))
    ssh_conn.connect(username=username, password=password)

    sftp_client = paramiko.SFTPClient.from_transport(ssh_conn)

    sftp_client.get(sftp_file, local_file)
except Exception as e:
    # do something
    pass
finally:
    if hasattr(sftp_client, "close") and callable(sftp_client.close):
        sftp_client.close()
    if hasattr(ssh_conn, "close") and callable(ssh_conn.close):
        ssh_conn.close()

在try中进行ssh连接及sftp连接,并进行连接后的操作,except中捕获异常,finally中无论两个连接对象获取是否成功都会执行,关闭ssh及sftp连接。

先使用hasattr方法及callable判断对象是否存在close方法且是否可调用,再调用close方法关闭连接对象,避免某个连接失败时调用close方法出现错误。

以上方式同样适用于其他连接,比如MySQL的连接对象及游标对象的关闭。

相关文章

网友评论

      本文标题:Python如何优雅的关闭连接对象

      本文链接:https://www.haomeiwen.com/subject/hnsrxhtx.html