Является ли Торнадо заменой Джанго или они дополняют друг друга? - PullRequest
48 голосов
/ 06 июня 2011

У меня есть несколько вопросов о Tornado и других веб-фреймворках.

1) Tornado претендует на звание веб-сервера (неблокирующий, поэтому очень производительный), поэтому некоторые люди говорят, что он не играет роли django --ie, они говорят, что tornado не является веб-фреймворком.

Тем не менее, он, по-моему, предоставляет веб-фреймворк (http://www.tornadoweb.org/documentation#main-modules) - таким образом, он заменяет django в качестве фреймворка веб-разработки.

Правильно ли мое понимание выше?

2) Обычно за Nginx устанавливается несколько Торнадо. Tomcat также обычно устанавливается за веб-сервером Apache. Могу ли я сказать, что Tornado играет ту же роль, что и Tomcat для веб-сервера Java? Если ответ да, то Tornado - это веб-фреймворк.

3) Я читал статью, в которой говорилось об использовании Tornado и Django вместе, например, http://www.jeremybowers.com/blog/post/3/on-deploying-tornado-web-server-framework/,, но я читал статью в Интернете, в которой утверждалось, что «если вы используете Django, то вы потеряете асинхронный от Tornado», это правда? или ложь? Смежный вопрос, хотя, если Tornado сам по себе является веб-фреймворком, как я уже говорил в 1), почему люди вообще беспокоятся об использовании Django? (привести плагин?)

Может кто-нибудь дать мне 101 введение?

Ответы [ 2 ]

35 голосов
/ 08 июня 2011

Чтобы ответить на вопрос,

  • НЕТ, Торнадо не является заменой Джанго.Это альтернатива.

  • ДА, они дополняют друг друга, но не в одном процессе (*)

Я бы использовал Django, когда это большая командаусилия и / или должны работать на базе данных SQL.

Я бы использовал Торнадо для всего остального.То есть.личные проекты, приложения, связанные с WebSocket, приложения, использующие серверную часть NoSQL.

(*) не утруждайте себя тем, что запускаете джанго внутри торнадо или наоборот, если у вас действительно нет для этого строгих требований.

27 голосов
/ 06 июня 2011
  1. Tornado - это веб-сервер и веб-фреймворк по большинству определений, но это довольно минимальный фреймворк (по сравнению с Rails или Django).Модули Tornado слабо связаны, поэтому можно использовать только компонент веб-сервера (или даже просто цикл ввода-вывода более низкого уровня).По сравнению с Django, во многих областях Tornado не обладает такой большой функциональностью.Например, на самом деле в Tornado нет абстракции модели, вам нужно накатить свою собственную.

  2. Когда вы запускаете приложение Tornado за Nginx, оно работает - Nginx просто проксик этому.Я считаю, что Tomcat - это сервер приложений, отличный от вашего приложения.Я бы не назвал Tomcat веб-фреймворком.

  3. Django не является асинхронным, поэтому ваше приложение будет блокироваться при использовании компонентов Django.Это может не иметь большого значения, это зависит от того, что вы делаете. Разработчики Tornado заявили (перефразируя), что для большинства приложений наибольший выигрыш заключается в отсутствии блокировки во время ожидания клиента, то есть веб-браузера.Например, блокировка базы данных не представляет большого труда, если вы выполняете запросы быстро.

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

Плюсы для Django:

  • это более полный стек (например, страницы администратораочень прост в реализации)
  • гораздо более устоявшись (плагины, учебные пособия и т. д.)
  • лучше документировано
  • его ORM очень хорош
...