发布于 2015-10-05 04:26:47 | 332 次阅读 | 评论: 0 | 来源: 网络整理

从文档中我们可以看出,Fabric 最主要的应用场景是通过 fab 命令来引用 fabfile ,然而 Fabric 的内部实现在保证它在不使用 fab 和 fabfile 的场合也非常易于使用——本文档将会详细向你介绍。

此外还有写需要时刻谨记的事情,比如:编写好 fabfile ,运行 fab 命令时是怎样创建并断开连接的。

连接服务器

前面我们已经介绍过 Fabric 是怎样连接主机的,不过仍有些知识埋藏在 运行 文档中,具体来说你可能需要快速浏览一遍 Connections 章节的文档。(虽然不必要,但我强烈建议你把整个文档都快速浏览一遍。)

如那些章节中所提到的, runsudo 这样的操作在连接时都会查看同一处设置: env.host_string 。其它设置主机列表的机制都用于 fab 命令,和作为 Python 库使用没有关系。

也就是说,在 Fabric 1.3 中,如果你想要结合任务 X 和主机列表 Y ,可以使用 execute ,就像这样: execute(X, hosts=Y) ,详细介绍请访问 execute 文档——手动操作主机列表功能真的很有必要。

断开连接

fab 所做另一件重要的事是,会在会话结束的时候断开所有连接,否则 Python 程序将永远等待网络资源的释放。

在 Fabric 0.9.4 或更新版本中,你可以使用这个函数方便地实现这个功能: disconnect_all ,只需要保证程序结束的时候调用该方法(通常在 try: finally 表达式中,以防意外的错误导致无法释放连接)即可。

如果你使用的是 Fabric 0.9.3 或更早之前的版本,你可以这样做( disconnect_all 仅仅提供了更好看的输出):

from fabric.state import connections

for key in connections.keys():
    connections[key].close()
    del connections[key]

最后注意

本文档只是个草案,因此并不回详细覆盖到导入 Fabric 库与使用 fab 命令的全部区别,上面知识列出了其中最需要注意的陷阱。所以,在不确定如何使用时候,可以参考 Fabric 源代码中 fabric/main.py 部分,其中 fab 命令的实现还包含了很多必要的工作。

最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务