return 来自 fabric 任务的值

return value from fabric task

我的 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 命令。

fab sum:x=10,y=20

那么我如何see/collect上述命令的输出?

了解 Fabric 的主要预期用途很重要:在远程服务器上执行任务。 return 价值观以这一事实为中心。

这是您的脚本的简化版本,说明了来自 Fabric 任务的 return 值:

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值。