资源描述:
《Fabric API 以及实例讲解》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、FabricAPI以及实例讲解CoreAPI核心API主要有七类:带颜色的输出类(coloroutput),上下文管理类(contextmanagers),装饰器类(decorators),网络类(network),操作类(oprations),任务类(tasks),工具类(utils)。ColorOutput每一个包含这个模块的函数返回String带有颜色。比如:1.Fromfabric.apiimportgreen,red2.Print(red("Thissentenceisred,exceptfor"+green("thesewords
2、,whicharegreen")+"."))共包括以下:1.fabric.colors.blue(text,bold=False)2.fabric.colors.cyan(text,bold=False)3.fabric.colors.green(text,bold=False)4.fabric.colors.magenta(text,bold=False)5.fabric.colors.red(text,bold=False)6.fabric.colors.white(text,bold=False)7.fabric.colors.yell
3、ow(text,bold=False)ContextManagersContextManagers使用都需要结合with语句。连续使用多个时可嵌套也可用逗号隔开连接使用。举例如下:1.withcd('/path/to/app'):2.withprefix('workonmyvenv'):3.run('./manage.pysyncdb')4.run('./manage.pyloaddatamyfixture')它等价于1.withcd('/path/to/app'),prefix('workonmyvenv'):2.run('./manage
4、.pysyncdb')3.run('./manage.pyloaddatamyfixture')注意此时在python2.5中的写法:withnested(cd('/path/to/app'),prefix('workonmyvenv')):此类包括:1.fabric.context_managers.cd(path)cd(远程主机更新工作目录)任何被包括在withcd(path):代码块里的命令run/sudo/get/put相当于执行"cd &&"那么很明显它与shell命令cd的区别举例如下:1.withcd('/var/www'):2
5、.run('ls')#Turnsinto"cd/var/www&&ls"比较1.run('cd/var/www')2.run('ls')前者相当于执行:run(‘cd/var/www&&ls’)后者相当于执行:ls时并没在/var/www路径下,而是在默认路径$HOME路径下cd可嵌套:1.withcd('/var/www'):2.run('ls')#cd/var/www&&ls3.withcd('website1'):4.run('ls')#cd/var/www/website1&&lsfabric.contextmanagers.lcd(
6、path)lcd(本地主机更新工作目录)同cd用法相同,只是它改变的的是本地工作目录,而cd改变的远程主机工作目录,所以它只能改变local的调用以及put/get的本地参数,它的默认路径与fabfile所在路径相关,由环境变量env.realfabfile指定目前,cd和lcd的实现视是通过改变环境变量env.cwd和env.lcwd实现的,所以如果要实现这个也可以通过环境变量来实现,但是不建议这么做。因为按照官方文档说明,将来这种实现方式可能要改。fabric.context_managers.hide(*groups)hide(将指定参
7、数输出级别默认设置为False)指定默认隐藏的输出级别group是一个或多个之前output指定的类别之一,执行时它会将这些输出类型置为False。比如你不想看到[hostname]:run:xxxx,以及阻止标准输出和错误就可以用下面这样1.defmy_task():2.withhide('running','stdout','stderr'):3.run('ls/var/www')4.fabric.context_managers.show(*groups)show(将指定参数输出级别默认设置为False)指定默认输出的输出级别用法同h
8、ide,作用刚好相反。默认是所有都输出,所以show的一个作用就是打开默认隐藏的debug。fabric.context_managers.path(path,be