Tornado: Posso executar o código após chamar self.finish () em um RequestHandler assíncrono?

Estou usando o Tornado. Eu tenho um monte de manipuladores de solicitação assíncrona. A maioria deles faz o trabalho de forma assíncrona e relata o resultado desse trabalho de volta ao usuário. Mas eu tenho um manipulador cujo trabalho é simplesmente dizer ao usuário que o seu pedido será processado em algum momento no futuro. Eu termino a conexão HTTP e depois faço mais trabalho. Aqui está um exemplo banalizado:

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

Minha pergunta é: isso é um uso legítimo do Tornado? O código após o self.finish () será executado de forma confiável? Eu nunca tive um problema com isso antes, mas agora estou vendo um problema com isso em um dos meus ambientes de desenvolvimento (nem todos eles). Há uma série de soluções aqui que eu já identifiquei, mas quero ter certeza de que não estou perdendo algo fundamental para o ciclo de vida da solicitação no Tornado. Não parece ser uma razão pela qual eu não seria capaz de executar o código depois de chamar self.finish (), mas talvez eu esteja errado.

Obrigado!

questionAnswers(2)

yourAnswerToTheQuestion