Python + Tornado vs Scala + Lift?

时间:2011-08-29 08:33:55

标签: python scala comet lift tornado

我正在寻找基于Google地图的网络应用程序。 我最初的想法是,在第一阶段,重点应放在前端,后端应该易于编写和原型,并应尽可能地帮助前端的发展。

没有'经典'页面,只有meebo.com风格的界面。 javascript + jquery。 (意思是,如果没有静态页面,则很少)。

我的眼睛已经抓住了彗星风格的服务器推送范例,我真的很有兴趣用这个做一些概念证明。

您是否有任何建议或优缺点或使用经验:

Python + Tornado vs Scala + Lift

Web应用程序的其他方面还有哪些优点或缺点可供选择?

注意:这适用于最多2位开发人员,而非大型分布式和变更团队。

由于

3 个答案:

答案 0 :(得分:14)

我认为Python和Tornado是一个很棒的团队,原因如下

  • Tornado实际上是一个IOLoop,碰巧带有一个运行在它上面的HTTP实现(以及一些帮助者)。

这意味着它带有您使用它进行 web 开发所需的一切。

这也意味着,如果您发现需要其他后端服务以帮助扩展您的应用程序,龙卷风很可能在该领域得到很好的利用。我实际上已经在Tornado中编写了比前端更多的后端服务(但是同事与它有着完全相反的体验 - 他更加面向前端并且发现它与使用它一样好)。有点偏离主题,但我们也在龙卷风之外使用他们的模板模块取得了巨大的成功。代码非常模块化,并且几乎没有相互依赖性,因此重用其组件是轻而易举的。

  • 你可以非常非常快速地学习它,并且能够很好地了解它。

你需要花一天时间才能弄明白。它的代码很干净,令人难以置信的评论很好,而且它还有不错的文档。我能够在大约一个星期内用Tornado 0.2(大约2009年)制作一个以前从未见过的制作服务。龙卷风源代码非常反魔法。

  • 速度快,稳定。在负载下。

我不知道它是否是存在的绝对最快速的东西,但是在我使用它的项目中,就并发用户数量而言,它承担了一些非常沉重的负担。数据传输(例如,大容量图像上传),它在稳定性方面是完全坚固的,并且b)足够快,我不必考虑水平缩放或获得更大的硬件。

  • Python非常灵活且适应性强。

我经常使用Python进行使用Tornado进行Web开发(以及其他一些事情,包括Django)。但是,我也将它用于与Web服务本身完全无关的事情,例如sysadmin / automation tasks,reporting&数据修改(例如,我在Python中编写hadoop作业),以及其他标准库模块(os,sys,shutil,itertools,collections等)使构建速度极快。我几乎可以在任何环境中使用Python,无论输出是通过流,还是浏览器,胖GUI或控制台。

它周围也有一个非常聪明的人,他们也非常友好。我无法将它与scala社区进行比较,但与许多其他社区相比,Python很容易成为我最喜欢的,并且与我为什么如此依赖它而变得如此紧密相关。我是一个多语言,但如果我有一个问题,我最想将这个问题提交给Python社区成员:)

答案 1 :(得分:6)

Scala是一种基本上更清晰的语言,可以让您根据自己的需要使用面向对象和功能范例。

Python有更多的语法糖,并且拥抱“只有一种方法可以做到这一点”的理念。

Scala通常与Eclipse / Idea等IDE一起使用 - 虽然也支持vim / emacs,并且使用SBT构建。如果您不习惯这些工具,可能需要一些努力才能在第一时间进行设置。

Python经常与更轻量级的编辑器一起使用。默认情况下,重新运行更新的Python脚本会更容易。

Lift真正针对Web应用程序,实现类似桌面的响应和行为。如果您只是想创建一个主页,那么肯定还有其他框架,这些框架不会让您像Lift一样学习。

答案 2 :(得分:3)

出于以下原因,我建议使用Python:

<强> 1。调试

我在编写Python代码时发现特别有用的是能够轻松调试(请参阅pdb模块),您只需要一个命令提示符和一个文本编辑器来设置断点。 使用Scala,您可能不得不依赖IDE来进行所有调试。

<强> 2。易于学习

至于编程语言,我不知道你对这两种语言的体验是什么。如果你是Python和Scala的初学者,我个人认为你会更快地学习Python。