2017-03-22 9 views
1

My fabfile.py enthält folgende Komponenten:Rückgabewert aus Stoff Aufgabe

# 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 

Am neu Stoff. Aus Gründen der Klarheit und des Verständnisses würde ich gerne verstehen, ob es eine Möglichkeit gibt, den Rückgabewert von der obigen Funktion sum() bei der Ausführung als fab-Befehl zu sammeln.

fab Summe: x = 10, y = 20

So wie ich sehe/die Ausgabe des obigen Befehls sammeln?

+0

Wo möchten Sie es sehen/erfassen - in der Shell? Diese Ausgabe könnte von der Shell erfasst werden, wenn Sie den Wert "sum" ausgeben, anstatt ihn zurückzugeben. Es könnte hilfreich sein, ein bisschen mehr darüber zu wissen, was Sie zu tun versuchen, um richtig zu steuern. – YellowShark

+0

Ich verstehe, dass es auf der Schale einfach bedeuten würde, es auszudrucken. Aber sagen wir, ich möchte, dass die Funktion von einer anderen Funktion in einem Python-Skript aufgerufen wird. Und jetzt möchte ich, dass die Summe an die aufrufende Funktion zurückgegeben wird. Wie erreiche ich es, wenn überhaupt? – qre0ct

Antwort

1

Es ist wichtig, die primäre, beabsichtigte Verwendung von Fabric zu verstehen: um Aufgaben auf Remote-Servern auszuführen. Die Rückgabewerte sind um diese Tatsache zentriert.

Hier ist eine vereinfachte Version des Skripts, die die Rückgabewerte aus Stoff Aufgaben stellt:

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) 

Das Ergebnis ist ein Wörterbuch, durch den Host eingegeben, der die Aufgabe ausgeführt:

{'<local-only>': 15} 

Wenn Sie diese Aufgabe auf mehrere Remote-Servern ausgeführt hatten, das wäre in etwa so aussehen:

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

Wenn Sie also versuchen, diese sum() Funktion als Teil einer breiteren Reihe von Funktionen zu verwenden, die sich gegenseitig aufrufen könnten, dann müssen Sie nur auf den richtigen/gewünschten Schlüssel vom result Wert zugreifen.