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

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

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

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

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

Ответ 1

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

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

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

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

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

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

  • Выполняйте любую задачу, требующую вычислительных ресурсов
  • Ввести блокирующие операции

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

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

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

Ответ 2

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

I would like to parse RSS feeds in the Tornado application. Would you consider that fairly computationally intensive?

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

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

Итак:

When should Tornado be used?
When is it useless?

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

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