Когда и как использовать Торнадо? Когда это бесполезно? - PullRequest
80 голосов
/ 18 ноября 2010

Хорошо, Tornado неблокируемый и довольно быстрый, и он может легко обрабатывать множество постоянных запросов.

Но я думаю, что это не серебряная пуля, и если мы просто слепо запустим сайт на Django или любой другой сайт с Tornado, это не даст никакого увеличения производительности.

Я не смог найти исчерпывающего объяснения этому, поэтому спрашиваю здесь:

  • Когда следует использовать Торнадо?
  • Когда это бесполезно?
  • Что следует учитывать при его использовании?
  • Как мы можем сделать неэффективным сайтом, используя Tornado?
  • Существует сервер и веб-фреймворк. Когда мы должны использовать фреймворк и когда мы можем заменить его другим?

Ответы [ 2 ]

45 голосов
/ 18 ноября 2010

Существует сервер и веб-фреймворк. Когда мы должны использовать фреймворк и когда мы можем заменить его другим?

Это различие немного размыто. Только если вы обслуживаете статические страницы, вы можете использовать один из быстрых серверов, например, lighthttpd. С другой стороны, большинство серверов предоставляют различную сложность инфраструктуры для разработки веб-приложений. Торнадо - это хороший веб-фреймворк. Twisted еще более способен и считается хорошим сетевым фреймворком. Он поддерживает множество протоколов.

Tornado и Twisted - это фреймворки, обеспечивающие поддержку неблокирующей, асинхронной разработки веб / сетевых приложений.

Когда следует использовать Торнадо? Когда это бесполезно? Что следует учитывать при его использовании?

По своей природе асинхронный / неблокирующий ввод / вывод отлично работает, когда он требует интенсивного ввода / вывода и не требует больших вычислительных ресурсов. Большинство веб / сетевых приложений хорошо подходит для этой модели. Если ваше приложение требует выполнения определенных ресурсоемких задач, его следует делегировать другому сервису, который справится с этим лучше. В то время как Tornado / Twisted может выполнять работу веб-сервера, отвечая на веб-запросы.

Как мы можем сделать неэффективный сайт с помощью Торнадо?

  1. Выполняй любую вычислительную задачу
  2. Ввести операции блокировки

Но я думаю, что это не серебряная пуля, и если мы просто слепо запустим сайт на Django или любой другой сайт с Tornado, это не даст никакого повышения производительности.

Производительность обычно является характеристикой полной архитектуры веб-приложения. Вы можете снизить производительность большинства веб-фреймворков, если приложение не разработано должным образом. Подумайте о кэшировании, балансировке нагрузки и т. Д.

Tornado и Twisted обеспечивают разумную производительность и хороши для создания очень производительного веб-приложения. Вы можете проверить отзывы на закрученные и торнадо, чтобы увидеть, на что они способны.

6 голосов
/ 18 сентября 2012

Я прошу прощения за ответ на старый вопрос, но я наткнулся на этот вопрос и удивился, почему на него не было больше ответов.Чтобы ответить на вопрос Барта J:

Я бы хотел проанализировать RSS-каналы в приложении Tornado.Считаете ли вы, что это довольно интенсивно в вычислительном отношении?

Ну, это зависит от того, какой анализ вы делаете и на каком оборудовании :) Долгое время - это долгое время, так что если ваше приложение занимает больше, чем говорятПолсекунды, чтобы ответить, это покажется вялым - профилируйте ваше приложение.

Ключ к быстрым системам - это отличная архитектура, не столько в специфике, сколько, например, в том, какую платформу вы используете (Twisted, Tornado,Apache + PHP).У Торнадо есть асинхронный стиль обработки, и это действительно то, к чему многие сводятся, по моему мнению.Node.js, Twisted и Yaws являются примерами других асинхронных веб-серверов, которые очень хорошо масштабируются благодаря легковесному подходу и асинхронному стилю обработки.

Итак:

Когда следует использовать Tornado?

Когда он бесполезен?

Tornado хорош для обработки большого количества соединений, поскольку он может отвечать на входящий клиент, отправлять обработчик запросов и не думать оэтот клиент, пока результат обратного вызова не будет помещен в очередь событий.Так что для этого конкретного качества следует использовать Tornado, если вы хотите хорошо масштабировать при обработке большого количества запросов.Асинхронная обработка облегчает функциональную развязку и доступ к данным без совместного использования.Это действительно хорошо сочетается с дизайном без сохранения состояния, таким как REST или другими сервис-ориентированными архитектурами s.Вам также не нужно сталкиваться с порождающими потоками или процессами с чрезмерной нагрузкой, и вы можете избежать некоторых проблем с блокировкой / IPC.

Tornado не будет иметь большого значения, с другойстороны, если ваш сервер и / или хранилище данных занимает много времени для обработки запросов.Это помогает делать параллельные проекты и веб-сервисы в частности.Параллельная архитектура облегчает масштабирование вашего проекта и поддерживает низкую связь.Это мой опыт работы с Торнадо, по крайней мере.

...