Есть сервер и веб-фреймворк. Когда использовать фреймворк, а когда заменить его другим?
Это различие немного размыто. Если вы обслуживаете только статические страницы, вы должны использовать один из быстрых серверов, например lighthttpd. В остальном большинство серверов предоставляют платформу разной сложности для разработки веб-приложений. Tornado - хороший веб-фреймворк. Twisted еще более эффективен и считается хорошей сетевой структурой. Он поддерживает множество протоколов.
Tornado и Twisted - это фреймворки, которые обеспечивают поддержку неблокирующей асинхронной разработки веб-приложений и сетевых приложений.
Когда следует использовать Торнадо? Когда это бесполезно? Что следует учитывать при его использовании?
По самой своей природе асинхронный / неблокирующий ввод-вывод отлично работает, когда он требует большого количества операций ввода-вывода и не требует интенсивных вычислений. Для этой модели хорошо подходит большинство веб-приложений и сетевых приложений. Если ваше приложение требует выполнения определенной вычислительно-ресурсоемкой задачи, ее необходимо делегировать какой-либо другой службе, которая может лучше справиться с ней. В то время как Tornado / Twisted может выполнять работу веб-сервера, отвечая на веб-запросы.
Как сделать сайт неэффективным с помощью Торнадо?
- Выполняйте любую задачу с интенсивными вычислениями
- Ввести блокирующие операции
Но я думаю, это не серебряная пуля, и если мы просто вслепую запустим Django или любой другой сайт с Tornado, это не даст никакого прироста производительности.
Производительность обычно является характеристикой полной архитектуры веб-приложения. Вы можете снизить производительность большинства веб-фреймворков, если приложение не спроектировано должным образом. Подумайте о кешировании, балансировке нагрузки и т. Д.
Tornado и Twisted обеспечивают разумную производительность и подходят для создания высокопроизводительных веб-приложений. Вы можете проверить отзывы как для Twisted, так и для торнадо, чтобы увидеть, на что они способны.
Прошу прощения за ответ на старый вопрос, но я наткнулся на этот и удивился, почему на него не было больше ответов. Чтобы ответить на вопрос Барта Дж.:
Ну, это зависит от того, какой синтаксический анализ вы выполняете и на каком оборудовании :) Долгое время - это долгое время, поэтому, если вашему приложению требуется больше, скажем, полсекунды для ответа, оно будет казаться вялым - профилируйте свое приложение.
Ключ к быстродействию систем - это отличная архитектура, не столько особенности, сколько, например, какой фреймворк вы используете (Twisted, Tornado, Apache + PHP). У Tornado есть асинхронный стиль обработки, и, на мой взгляд, многое из этого сводится к этому. Node.js, Twisted и Yaws - это примеры других асинхронных веб-серверов, которые очень хорошо масштабируются благодаря легковесному подходу и асинхронному стилю обработки.
Так:
Tornado хорош для обработки большого количества подключений, поскольку он может отвечать входящему клиенту, отправлять обработчик запросов и не думать об этом клиенте, пока обратный вызов результата не будет помещен в очередь событий. Поэтому для этого конкретного качества следует использовать Tornado, если вы хотите хорошо масштабироваться при обработке большого количества запросов. Асинхронная обработка облегчает функциональную развязку и доступ к данным без совместного использования. Это действительно хорошо сочетается с дизайном без сохранения состояния, таким как REST или другой сервис-ориентированной архитектурой . Вам также не нужно иметь дело с порождением потоков или процессов с присущими им накладными расходами, и вы можете избавиться от некоторых проблем с блокировкой / IPC.
С другой стороны, Tornado не будет иметь большого значения, если вашему бэкэнду и / или хранилищу данных требуется много времени для обработки запросов. Это помогает создавать параллельные проекты и, в частности, веб-сервисы. Параллельная архитектура упрощает масштабирование вашего проекта и сохраняет низкую взаимосвязь. По крайней мере, это мой опыт работы с Торнадо.
источник