alekseyxxxx
Получается, что хоть клиенты и не блокируются, но ждут ответа дольше. Или я не так понимаю?)
Из за GIL
питон код будет работать только в одном потоке, т.е. если вы блокируете питон-кодом
for in xrange то другие потоки не работают, если вы заблокируете не питон-кодом (io операции, обычно ими блокируют, db.query, urllib.urlopen, time.sleep …) то другой питон-код в других потоках
будет работать.
Т.е. делать потоки имеет смысл для работы с блокирующим io. Но все же разработчики торнадо говорят про потоки как крайнюю меру (сходу ссылку не нашел, возможно где то у них на трекере).
Плюс при введении потоков общая производительность приложения падает.
Для не больших проектов (нагрузок) нормально. Для больших, я бы вынес подобный функционал в отдельный процесс, и если необходимо, общался с ним через zmq, xmlrpc и т.п. Кстати из торнадо можно асинхронно вызывать процессы,
примерА вообще, возможно вам не нужен асинхронный фреймворк для всего. Например недавний проект я сделал на bottle (wsgi) + авторизация на tornado + чат и обмен командами через websocket на gevent. - по принципу “инструмент от задачи”, а вместо tornado для авторизации рассматривал node.js ;)
Вот ещё посмотрите
эту тему, я там поплакался на большой проект под tornado.