Wie kann ich eine Python-Webanwendung auf GAE nach einer Weiterleitung vorzeitig beenden?

8

Disclaimer: völlig neu für Python von einem PHP-Hintergrund

Ok, ich benutze Python in der Google App Engine mit dem Webapp-Framework von Google.

Ich habe eine Funktion, die ich importiere, da sie Dinge enthält, die auf jeder Seite verarbeitet werden müssen.

%Vor%

Das funktioniert gut, wenn ich es anrufe, aber wie kann ich sicherstellen, dass die App nach der Weiterleitung ausgeschaltet wird? Ich möchte nichts anderes verarbeiten. Zum Beispiel werde ich das tun:

%Vor%

Ich möchte sicherstellen, dass, sobald die Umleitung in some_function () durchgeführt wurde (was gut funktioniert), keine Verarbeitung in der get () -Funktion nach der Umleitung erfolgt, noch wird "Einige output here" ausgegeben.

Was sollte ich tun, damit alles richtig funktioniert? Ich kann das Skript nicht einfach beenden, da das Webapp-Framework ausgeführt werden muss.

Mir ist klar, dass ich mehr als wahrscheinlich Dinge auf völlig falsche Weise für eine Python-App mache, also wäre jede Anleitung eine große Hilfe. Hoffentlich habe ich mich richtig erklärt und jemand wird mir in die richtige Richtung zeigen können.

Danke

    
Mike 08.06.2010, 23:57
quelle

3 Antworten

4

Wie wäre es damit?

%Vor%

Zur Referenz: Wenn Sie some_function () in vielen RequestHandlern benötigen, wäre es pythonisch, eine Klasse zu erstellen, von der Ihre anderen RequestHandler ableiten können:

%Vor%     
Dan McDougall 09.06.2010, 00:37
quelle
4

Ich schlage vor, dass Sie einen booleschen Wert von some_function() zurückgeben, abhängig davon, ob der Aufrufer die Ausführung fortsetzen soll oder nicht. Beispiel:

%Vor%

Es gibt auch eine etwas kompliziertere Alternative, die hilfreich sein kann, wenn some_function() mehrere Ebenen tief verschachtelt ist oder wenn Sie viele Funktionen wie diese haben. Die Idee: Eine Ausnahme auslösen, die anzeigt, dass die Verarbeitung gestoppt werden soll, und eine Unterklasse von webapp.RequestHandler verwenden, die diese Ausnahme einfach abfängt und ignoriert. Hier ist eine grobe Vorstellung davon, wie das gehen könnte:

%Vor%

Dies könnte es ein wenig einfacher machen, mit some_function() zu arbeiten (und Ihre anderen Anforderungshandler ein wenig einfacher zu lesen). Zum Beispiel:

%Vor%     
David Underhill 09.06.2010 00:36
quelle
0

Ich weiß, dass diese Frage ziemlich alt ist, aber ich habe heute etwas gemacht und natürlich eine andere Lösung versucht, ohne darüber nachzudenken, es hat gut funktioniert, aber ich frage mich, ob es ein Problem damit auf diese Weise geben würde.

>

Meine Lösung ist jetzt nur zurückzukehren, alles zurückzugeben, aber ich benutze "return False", da es ein Problem mit der Anfrage gibt, so dass ich einen Fehler drucke oder woanders umadressiere.

Durch die Rückkehr habe ich bereits die Ausgabe usw. eingestellt und ich werde die Funktion get () oder post () vorzeitig beenden.

Ist das eine gute Lösung?

    
Mike 05.08.2010 15:19
quelle