fabric的错误处理函方式
默认情况下,Fabric在任务遇到错误时就会退出,如果我们希望捕获这个错误而不是退出任务的话,就要开启”warn_only”参数。在上面介绍”settings()”上下文管理器时,我们已经看到了临时开启”warn_only”的方法了,如果要全局开启,有两个办法:
在执行”fab”命令时加上”-w”参数
fab -w hello
设置”env.warn_only”环境参数为True
from fabric.api import env env.warn_only = True
现在遇到错误时,控制台会打出一个警告信息,然后继续执行后续任务。那我们怎么捕获错误并处理呢?像”run()”, “local()”, “sudo()”, “get()”, “put()”等SSH功能函数都有返回值。
当返回值的”succeeded”属性为True时,说明执行成功,反之就是失败。你也可以检查返回值的”failed”属性,为True时就表示执行失败,有错误发生。在开启”warn_only”后,你可以通过”failed”属性检查捕获错误,并执行相应的操作。
from fabric.api import env, cd, put env.hosts = ['hellodemos.com', ] env.password = '111111' env.warn_only = True def hello(): with cd('/var/www/'): upload = put('/tmp/myapp-0301.tar.gz', 'myapp.tar.gz') if upload.failed: sudo('rm myapp.tar.gz') put('/tmp/myapp-0301.tar.gz', 'myapp.tar.gz', use_sudo=True)