Я использую Торнадо. У меня есть куча асинхронных обработчиков запросов. Большинство из них выполняют свою работу асинхронно, а затем сообщают результат этой работы пользователю. Но у меня есть один обработчик, задачей которого является просто сказать пользователю, что их запрос будет обработан в какой-то момент в будущем. Я завершаю HTTP-соединение, а затем выполняю больше работы. Здесь тривиализованный пример:
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
...
Мой вопрос: это законное использование Tornado? Будет ли код после self.finish() работать надежно? У меня никогда не было проблем с этим раньше, но теперь я вижу проблему с ним в одной из моих сред разработки (не все). Здесь есть несколько рабочих обходов, которые я уже определил, но я хочу удостовериться, что я не пропущу что-то фундаментальное для жизненного цикла запроса в Tornado. Не существует SEEM, поэтому я не смог бы запустить код после вызова self.finish(), но, возможно, я ошибаюсь.
Спасибо!