Tornado: Czy mogę uruchomić kod po wywołaniu self.finish () w asynchronicznym RequestHandler?

Używam Tornado. Mam kilka asynchronicznych procedur obsługi żądań. Większość z nich wykonuje swoją pracę asynchronicznie, a następnie raportuje wynik tej pracy użytkownikowi. Ale mam jeden program obsługi, którego zadaniem jest po prostu powiedzieć użytkownikowi, że jego żądanie zostanie w przyszłości przetworzone. Kończę połączenie HTTP i wykonuję więcej pracy. Oto trywialny przykład:

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
        ...

Moje pytanie brzmi: czy jest to uzasadnione użycie Tornado? Czy kod po zakończeniu self.finish () będzie działał niezawodnie? Nigdy wcześniej nie miałem z tym problemu, ale teraz widzę problem z nim w jednym z moich środowisk programistycznych (nie wszystkie). Istnieje wiele obejść tutaj, które już zidentyfikowałem, ale chcę się upewnić, że nie brakuje mi czegoś podstawowego dla cyklu życia żądania w Tornado. Nie wydaje się być powodem, dla którego nie mógłbym uruchomić kodu po wywołaniu self.finish (), ale może się mylę.

Dzięki!

questionAnswers(2)

yourAnswerToTheQuestion