Tornado是Django的替代品还是它们之间的互补?

1zmg4dgp  于 2022-12-05  发布在  Go
关注(0)|答案(2)|浏览(187)

我有几个关于Tornado和其他Web框架的问题。
1)Tornado声称自己是一个web服务器(一个非阻塞的服务器,因此性能很高),所以有些人说它不扮演django的角色--也就是说,他们说Tornado不是一个web框架。
然而,我认为它确实提供了一个web框架(http://www.tornadoweb.org/documentation#main-modules)--通过这种方式,它似乎取代了django成为web开发框架。
我的上述理解是否正确?
2)通常情况下,在Nginx后面安装了几个Tornado。Tomcat也通常安装在Apache Web服务器后面。我能说Tornado扮演着Tomcat在Java Web服务器上所扮演的角色吗?如果答案是肯定的,那么Tornado就是一个Web框架。
3)我读过一些文章说一起使用Tornado和Django,比如http://www.jeremybowers.com/blog/post/3/on-deploying-tornado-web-server-framework/,但是我在网上读到一些文章声称“如果你使用Django,那么你会失去Tornado的异步功能”,这是真的还是假的?一个相关的问题是,如果Tornado本身就像我在1)中说的那样是一个Web框架,为什么人们会费心使用Django呢?
有人能给予我介绍一下吗?

ubof19bj

ubof19bj1#

为了回答这个问题,

  • 不,龙卷风不是 Django 的替代品,它是一种替代品。
  • 是,它们是互补的,但不是在同一个过程中(*)

当Django是一个大的团队工作和/或需要在SQL数据库上运行时,我会使用Django。
我会用Tornado来做其他的事情,比如个人项目、WebSocket相关的应用程序,或者使用NoSQL后端的应用程序。
(*)不要在Tornado里面运行Django,或者反过来运行Django,除非你真的有很强的需求。

cu6pst1q

cu6pst1q2#

  1. Tornado是一个Web服务器一个Web框架的大多数定义,但它是一个相当小的框架Tornado模块是松散耦合的,因此可以只使用web服务器组件(甚至只是较低级别的IO循环)与Django相比,Tornado在很多方面都没有那么多功能。例如,Tornado中并没有真正模型抽象,您必须自己创建模型。
    1.当你在Nginx后面运行一个Tornado应用程序时,那是你的应用程序在运行-- Nginx只是它的代理。我认为Tomcat是一个应用服务器,与你的应用程序不同。我不会把Tomcat称为一个Web框架。
    1.[更新:Django在3.0中增加了对异步视图的支持,在4.0中增加了对一些ORM查询的支持。这一点已经不准确了]Django不是异步的,所以通常你的应用在使用Django组件时会阻塞。这可能不是什么大问题,这取决于你在做什么。Tornado的开发人员已经声明(解释得很重)对于大多数应用程序来说,最大的胜利来自于在等待客户端(即Web浏览器)时不阻塞。例如,如果您保持查询速度较快,在数据库上阻塞并不是一个大问题。
    Django和Tornado都有很多优点和缺点,而且两者都有很多替代方案--这绝对不是两者之间的选择。下面是一个
    非常
    快速的列表,列出了为什么你可能想使用Django:
    Django的优点:
  • 它是一个更完整的堆栈(例如,管理页面非常容易实现)
  • 它更加成熟(插件、教程等)
  • 它更好地记录了
  • 它ORM非常好

相关问题