该网站说:
关闭连接:Fabric的连接缓存永远不会关闭连接 - 它会将其留给使用它的任何东西。 fab工具为您完成这个簿记:它遍历所有打开的连接并在它退出之前关闭它们(无论任务是否失败。)
图书馆用户需要确保他们在程序退出之前明确关闭所有打开的连接,尽管我们计划将来更容易。
我到处搜索,但我找不到如何断开或关闭连接。我循环遍历我的主机并设置env.host_string。它正在工作,但在退出时挂起。关于如何关闭的任何帮助?重申一下,我正在使用库,而不是fabfile。
如果您不想遍历所有打开的连接,那么fabric.network.disconnect_all()就是您正在寻找的。 docstring读取
msgstr“”“与所有当前连接的服务器断开连接。在
fab
的主循环结束时使用,也供图书馆用户使用。”“
面料的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
所以,我去关闭那些。
您可以使用以下代码段(使用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()
from fabric.network import disconnect_all
disconnect_all()