从Fabric任务返回值

时间:2017-03-22 08:23:58

标签: python fabric

我的fabfile.py包含以下内容:

# simple function - no arguments and no returns
def hello():
    print "Hello World!"

# function with default argument
def goodbye(name='Anonymous'):
    print "Buh-bye world!", name

# function that does nothing
def nothingHere():
    pass

# function that take arguments and returns something
def sum(x=0, y=0):
    sum=x+y
    return sum

对面料不熟悉。现在为了清楚和理解,我想了解在运行fab命令时是否有办法从上面的 sum()函数中收集返回值。

  

fab sum:x = 10,y = 20

那么如何查看/收集上述命令的输出?

1 个答案:

答案 0 :(得分:1)

了解Fabric的主要用途:在远程服务器上执行任务非常重要。返回值以此为中心。

以下是脚本的简化版本,用于说明Fabric任务的返回值:

from fabric.api import execute

# function that take arguments and returns something
def sum(x=0, y=0):
    sum = x + y
    return sum

# using execute to simulate the `fab <command>` command-line usage
result = execute(sum, x=5, y=10)
print(result)

结果是一个字典,由执行任务的主机键入:

{'<local-only>': 15}

如果您在多个远程服务器上运行此任务,则看起来像这样:

result = execute(sum, x=5, y=10, hosts=['host-1', 'host-2'])
print(result)
{'host-1': 15, 'host-2': 15}

因此,如果您尝试将此sum()函数用作可能相互调用的更广泛函数的一部分,那么您只需要从result访问正确/所需的键。值。