Я хотел бы иметь возможность запускать некоторые функции очистки тогда и только тогда, когда клиент успешно завершит загрузку файла, который я обслуживаю, используя Tornado.
Я установил инструмент газа Firefox, и он замедлил соединение до скорости коммутируемого соединения, и установил этот обработчик, чтобы генерировать кучу случайного текста мусора:
class CrapHandler(BaseHandler):
def get(self, token):
crap = ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(100000))
self.write(crap)
print "done"
Я получаю следующий вывод из торнадо сразу после выполнения запроса:
done
I 100524 19:45:45 web:772] 200 GET /123 (192.168.45.108) 195.10ms
Затем клиент загружает около 20 секунд. Я ожидал, что он напечатает «выполнено» после того, как клиент будет готов.
Кроме того, если я сделаю следующее, я получу почти такой же результат:
class CrapHandler(BaseHandler):
@tornado.web.asynchronous
def get(self, token):
crap = ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(100000))
self.write(crap)
self.finish()
print "done"
Я что-то упустил здесь? Может ли торнадо даже поддержать то, что я пытаюсь сделать? Если нет, то есть ли альтернатива?