Tornado: ¿Puedo ejecutar código después de llamar self.finish () en un RequestHandler asíncrono?
Estoy usando Tornado. Tengo un montón de manejadores de solicitudes asíncronas. La mayoría de ellos realizan su trabajo de forma asíncrona y luego informan el resultado de ese trabajo al usuario. Pero tengo un manejador cuyo trabajo es simplemente decirle al usuario que su solicitud se procesará en algún momento en el futuro. Termino la conexión HTTP y luego hago más trabajo. Aquí hay un ejemplo trivializado:
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
...
Mi pregunta es: ¿es este un uso legítimo de Tornado? ¿El código después del self.finish () se ejecutará de manera confiable? Nunca he tenido un problema con eso antes, pero ahora veo un problema con él en uno de mis entornos de desarrollo (no en todos ellos). Hay una serie de soluciones que ya he identificado, pero quiero asegurarme de que no me esté perdiendo algo fundamental para el ciclo de vida de las solicitudes en Tornado. No parece haber una razón por la que no pueda ejecutar el código después de llamarme self.finish (), pero tal vez me equivoque.
¡Gracias!