В одну телегу
впрячь не можно
Коня и
трепетную лань.
Забылся я
неосторожно:
Теперь плачу
безумствам дань...
Торнадо (Tornado
Web Server) предназначен для массовой
одновременной обработки тысяч коннектов.
Поэтому неудивительно, что он не умеет
грамотно отдавать большие статические
файлы. Но мы знаем, что если очень хочется,
то можно.
Но ситуации могут быть
разные. В моём случае через Tornado успешно
раздавалось большое количество мелких
страничек, хранящихся в SQLite и один
большой файл на 200МБ со списком всех
доступных URL. Поднимать ради одного
этого файла Nginx совершенно не хотелось.
Второй вопрос - "ну так в
чем проблема - раздавай на здоровье!".
Вот тут мы и сталкиваемся с неприятной
особенностью этого сервера - стандартный
StaticFileHandler
загружает
весь файл целиком в память
перед тем как отдать его клиенту
(пруфлинк).
Помимо этого, занятая память не
освобождается, если клиент разорвал
подключение не скачав весь файл целиком.
Вот эти 2 проблемы и будем
решать.
На примере
решения вполне практической задачи мы
можем многому научиться. Использование
Торнадо, генераторы, декораторы и прочее
по мелочи. Велкам.
Сцылки
http://www.bibliotekar.ru/encSlov/index.htm
original post http://vasnake.blogspot.com/2012/10/tornado.html
original post http://vasnake.blogspot.com/2012/10/tornado.html
Комментариев нет:
Отправить комментарий