Sellerie: Verketten von Aufgaben mit mehreren Argumenten

7

Die Sellerie-Dokumentation sagt mir, dass, wenn mehrere Aufgaben miteinander verkettet sind, das Ergebnis der ersten Aufgabe das erste Argument der nächsten sein wird. Mein Problem ist, ich kann es nicht zum Laufen bringen, wenn ich eine Aufgabe habe, die mehrere Ergebnisse zurückgibt.

Beispiel:

%Vor%

Wenn ich sie jetzt in einer Kette wie (get_comments (url) | render_template ()) anrufe, wendet apply_asnc () python ein TypeError: render_template() takes exactly 2 arguments (0 given) an.

Ich kann sehen, dass die Ergebnisse nicht ausgepackt und auf die Argumente angewendet werden. Wenn ich nur get_comments aufrufen, kann ich tun:

%Vor%

und beide Ergebnisse erhalten.

    
Lett1 18.01.2013, 09:51
quelle

1 Antwort

20

Es gibt zwei Fehler hier.

Zuerst müssen Sie get_comments() und render_template() nicht aufrufen. Stattdessen sollten Sie die% task-Methode .s() verwenden. Wie:

%Vor%

In Ihrem Fall starten Sie zuerst die Funktion und versuchen dann, die Ergebnisse der Funktionen mit einer Kette zu verknüpfen.

Zweitens geben Sie eigentlich nicht "zwei Ergebnisse" von Ihrer ersten Aufgabe zurück. Stattdessen geben Sie ein Tupel zurück, das beide Ergebnisse enthält, und dieses Tupel wird als einzelnes Objekt an die zweite Task übergeben.

Daher sollten Sie Ihre zweite Aufgabe als

umschreiben %Vor%

Wenn Sie diese beheben, sollte es funktionieren.

    
Roman Imankulov 21.01.2013, 15:29
quelle

Tags und Links