Tornado: Kann ich Code ausführen, nachdem ich self.finish () in einem asynchronen RequestHandler aufgerufen habe?

Ich benutze Tornado. Ich habe eine Reihe von asynchronen Request-Handlern. Die meisten von ihnen erledigen ihre Arbeit asynchron und melden dann das Ergebnis dieser Arbeit an den Benutzer zurück. Ich habe jedoch einen Handler, der dem Benutzer lediglich mitteilt, dass seine Anfrage zu einem späteren Zeitpunkt bearbeitet wird. Ich beende die HTTP-Verbindung und arbeite dann weiter. Hier ist ein trivialisiertes Beispiel:

class AsyncHandler(tornado.web.RequestHandler):

    @tornado.web.asynchronous
    def get(self, *args, **kwargs):
        # first just tell the user to go away
        self.write("Your request is being processed.")
        self.finish()

        # now do work
        ...

Meine Frage ist: Ist dies eine legitime Verwendung von Tornado? Läuft der Code nach dem self.finish () zuverlässig? Ich hatte noch nie ein Problem damit, aber jetzt sehe ich ein Problem damit in einer meiner Entwicklungsumgebungen (nicht in allen). Hier gibt es eine Reihe von Problemumgehungen, die ich bereits identifiziert habe, aber ich möchte sicherstellen, dass mir im Anforderungslebenszyklus von Tornado nichts Wesentliches entgeht. Es scheint keinen Grund zu geben, warum ich nach dem Aufruf von self.finish () keinen Code ausführen könnte, aber vielleicht irre ich mich.

Vielen Dank!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage