使用API​​时,使用Python Fabric断开与主机的连接

时间:2010-08-02 22:34:47

标签: python fabric

该网站说:

  

关闭连接:Fabric的   连接缓存永远不会关闭   连接本身 - 它离开了   任何使用它的东西。制造工具   为你做这个簿记:它   迭代所有打开的连接和   在退出之前关闭它们   (无论是否任务   失败与否。)

     

图书馆用户需要确保他们   明确关闭所有打开的连接   在他们的计划退出之前,尽管我们   计划让这更容易   将来

我到处搜索,但我无法找到如何断开或关闭连接。我循环遍历我的主机并设置env.host_string。它正在工作,但在退出时挂起。关于如何关闭的任何帮助?重申一下,我正在使用库,而不是fabfile。

4 个答案:

答案 0 :(得分:4)

面料的main.py有:

from fabric.state import commands, connections

for key in connections.keys():
    if state.output.status:
        print "Disconnecting from %s..." %, denormalize(key), connections[key].close()

fabric.state.connections是一个dict,其值为:paramiko.SSHClient

所以,我去关闭那些。

答案 1 :(得分:3)

如果您不想遍历所有打开的连接,那么fabric.network.disconnect_all()就是您正在寻找的。文档字符串读取

  

“””       断开所有当前连接的服务器。       在fab的主循环结束时使用,也可供其使用       图书馆用户。       “”“

答案 2 :(得分:0)

您可以使用以下代码段(使用fabric 1.10.1)按主机名断开与特定连接的连接:

def disconnect(host):
    host = host or fabric.api.env.host_string
    if host and host in fabric.state.connections:
        fabric.state.connections[host].get_transport().close()

答案 3 :(得分:-2)

from fabric.network import disconnect_all
disconnect_all()