Pylons是否适合企业级应用?

14

我是一名开发者,正在寻找适用于企业的Python Web应用程序框架。我的主要关注点是长期支持、丰富的功能集和可靠性。

我一直在尝试使用Pylons,而在Windows上使用Ruby on Rails的经历非常糟糕,甚至不得不编译自己的Postgres驱动程序,所以Pylons和Python对我来说是救星。

我相信由于Python拥有非常强大的社区和商业兴趣支持,因此Python绝对可以被视为“企业级”,因为有大量可用的库并努力保持与Python 3.0的向后兼容性。我的担心是:

我们是否也能这么说Pylons 0.97呢?

顺便说一句,我一直在研究如何让SQLAlchemy与Pylons上的DB2配合使用,以便可以自动化基本的CRUD操作。目前 http://code.google.com上的DB2驱动程序非常无用,只支持SQLAlchemy 0.4。您认为IBM会致力于使DB2长期与SQLAlchemy配合使用吗?还是您们感觉使用IBM提供的ODBC驱动程序与SQLAlchemy进行接口更好。与使用IBM的SQLAlchemy驱动程序相比,是否存在任何缺点?


哇,伙计们...非常感谢你们的回复。请继续提出问题。我会尽力逐个回复你们的进一步查询。到目前为止,Django似乎比Pylons更好,但我特别喜欢Tom Willis关于SQLAlchemy处理原始SQL等能力的回复。我的主要关注点是Pylons和SQLAlchemy是否会有持续的支持。但我会直接回复Tom。再次非常感谢。 - cygnus atratus
7个回答

39
说到企业级应用准备就绪,我不确定在Python世界中使用Pylons和SQLAlchemy的堆栈能够更准备就绪。你已经准备好处理具有疯狂模式的大型遗留数据库(在大型企业世界中非常普遍),这是Django完全无法胜任的。当然,在Django中,您仍然可以使用SQLAlchemy,但是因为所有Django contrib工具都依赖于您按照“Django”方式执行操作的假设,所以它们全部崩溃了。
自2005年中期以来,Pylons一直存在,并且并没有消失。它实际上相当成熟,并且具有相当缓慢而稳定的发布计划,每次发布之间的时间为6-10个月,并进行了相当多的测试。其中一个核心Pylons开发人员也是Jython的开发人员,确保Pylons可以在JVM上运行(这有助于将基于Pylons的应用程序部署到对无法打包成WAR文件进行部署的事物具有敌意的企业环境中)。
关于这里的其他“答案”,问题是关于Pylons是否准备就绪,我不知道为什么其他人无法阅读问题,而选择开始传道自己最喜欢的框架。如果这是选择的标准,那么应该使用PHP,因为它使得Django和Zope社区看起来相对微不足道。 Pylons绝对拥有足够大的社区来支持自己,特别是由于其非常精简且紧凑的代码库所拥有的bug远不及Zope / Django等“厨房水槽”框架的数量。

你好,本!听到你坦诚而明智的回复,我感到非常荣幸。你为出色的框架Pylons做了很多工作,我非常感激。我目前对Pylons非常感兴趣,但我非常担心IBM对SQLAlchemy的DB2驱动程序的支持。它尚未从SA 0.4更新到SA 0.5,而Pylons 0.97依赖于SA 0.5。我同意你对“更大的接受度”的看法,但是请注意,你声称Pylons“不会消失”,是否同意更大的社区将表明更多的支持? - cygnus atratus
此外,由于缺乏对Windows开发人员的支持和不太出色的ruby-pg驱动程序,我从ROR转向了Pylons。这花费了我相当多的时间,并使我变得非常沮丧。我必须澄清,“企业级可用性”是我的主要关注点是可靠性、对遗留代码的支持和长期性。到目前为止,我对Pylons感到非常满意,这就是为什么我提出这个问题的原因。但我希望IBM将继续支持DB2和Python的SA支持。 - cygnus atratus
3
对于兼容性支持,Pylons目前几乎有三分之一是针对旧版本的遗留支持。我们在1.0发布之前就已经决定早期采用者应该拥有遗留支持,而不是等到1.0版本之后再进行此类决策。Pylons 1.0将在接下来的六个月内发布,它将取消旧版本的遗留支持,但同时也会发布Pylons 0.10版本,其中包含废弃警告,以便更平滑地升级到1.0版。关于支持方面,您可能会发现获得Python DB2支持比获得Pylons支持更加困难。 - Ben Bangert

2
我会说,如果你担心“企业级”支持的问题,你应该更多地关注Django。虽然你可以辩论这两个框架的相对技术优点,但毫无疑问的是,Django的应用更广泛,有很多大公司在使用它。
另一个原因是IBM(就在最近几天)发布了Django驱动程序 for DB2,所以你可以毫不费力地使用现有的数据库与Django ORM。

感谢分享IBM针对Django的驱动程序。我已经与IBM的一位开发人员讨论了关于SQLAlchemy的DB2驱动程序,显然,它将在下周完成。我希望一切顺利,那个驱动程序能够准备好投入生产。 - cygnus atratus

1

我认为一款软件具备稳定性和支持时,就可以称之为企业级应用。

我相信 Pylons/Python 是稳定的。有很多网站都在使用 Pylons(包括 Reddit.com 这样的高流量网站)。

至于支持方面,我会考虑一些方面,比如雇佣懂得 Pylons 的人或者购买支持合同的便捷程度。这个有点难以衡量。如果你计划自己提供支持,那么 Pylons 已经准备就绪。如果你想要寻求支持,让别人来承担软件出现问题的责任,那么你可能需要寻找其他选择。


嗨Jeff,非常感谢你的评论。我认为Pylons有潜力做很多令人惊叹的事情,但是对于企业而言,它的持久性非常关键。因为要真正掌握一门语言(Python)和一个框架(Pylons)需要花费数月甚至数年的时间,所以在一个框架上投入时间和精力,而该框架并没有不断添加新功能来保持领先地位,这是不明智的。而且,作为企业级技术,我希望有详尽的文档(不是源代码!)来快速培训内部团队使用这项新技术。不过,我同意Pylons真是太棒了。 - cygnus atratus

1

定义企业级准备。

另外,如果我们谈论可扩展性,我会说你使用 sqlalchemy 会更好,因为当必要时可以降到原始 SQL。而 Active Record 模式似乎是高级框架价值的主要原因,但如果你随意组合代码,这可能会导致可扩展性问题。

当然,“企业级准备”对某些人来说意味着复杂和昂贵,如果这是您的定义,那么我会说没有任何 Python Web 框架能够满足您的需求。


嗨Tom,非常感谢你的帮助。关于“企业级准备就绪”,我很抱歉在我的问题中没有定义得足够清楚。我担心Python(我猜这不是一个大问题)、Pylons和SQLAlchemy的路线图(我担心用户群可能不够大,无法确保持续使用)。我打算使用SQLAlchemy来自动化简单的CRUD操作,而大部分SQL将采用存储过程的形式。这是为了创建一系列公司内部应用程序。因此,未来的支持对我来说至关重要,这有助于我决定我的平台。 - cygnus atratus
很好,我不知道如何直接解决任何给定API的长久性或稳定性问题。这可能归结于个人偏好。对我来说,如果我能理解正在发生的魔法,那么我就可以支持它。我永远无法完全理解Rails中到底发生了什么,因此我经常会与框架作斗争,而不是得到帮助。只是我的看法。 - Tom Willis

0
我赞同使用Django的呼吁。实际上,我更喜欢Pylons,因为它比Django更精简,但考虑到你指定了“企业级准备”,我认为你可能想要倾向于使用更大的框架,并随身携带厨房水槽。

7
对于较大的项目,至少在控制器/视图组合方面使用“厨房水槽”框架(如身份验证、发表评论等)恰恰是你不想使用的。堆叠预打包组件意味着你将拥有一个笨重的应用程序,其中没有一个组件完全符合你的要求或按照你的需求执行。如果你真的想要“开箱即用”,那么有很多提供博客、评论等服务的网络服务可供选择,但是你也不会使用这些吧?这太多胶带了,缺乏诚实的架构。 - zzzeek
哦,刚注意到你可以点赞评论,这很好,因为这值得一个赞。你的观点非常棒。 - JohnMetta

0

+1 for Django

Pylons是一个不错的框架,但你需要匹配所有组件来创建自己的架构,所以我认为它更适合较小的项目。对于更大的项目,我建议使用Django,因为它已经被证明可以在一些大型网站上进行生产。

IBM最近发布了一个DB2后端,可以与Django很好地配合使用, 所以这可能非常适合你。


0

如果你想要一些不太可能很快消失的框架,可以看看Django和Zope社区中的一个框架(Grok、BFG、Zope3)。Zope拥有庞大的社区,并已经存在了十多年,不会很快消失,是许多新型Python Web技术的孵化场所。Django比较新,只是最近推出了1.0版本,但它拥有非常庞大的社区,并且也将长期存在。


非常感谢,Lennart。我想我会去了解一下Zope!虽然我不知道Django有如此压倒性的支持。 - cygnus atratus
是的,在Stackoverflow上Django非常强大。 :) - Lennart Regebro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接