我正在用Django构建一个web应用程序。我选择Django的原因是:

我想使用免费/开源工具。 我喜欢Python,觉得它是一种长期的语言,而对于Ruby,我不确定,而PHP似乎是一个巨大的麻烦。 我正在为一个想法构建一个原型,并没有过多地考虑未来。开发速度是主要因素,而且我已经了解Python。 我知道迁移到谷歌应用程序引擎将更容易,如果我选择这样做在未来。 我听说Django很“不错”。

现在我越来越接近于考虑出版我的作品,我开始担心规模问题。我找到的关于Django伸缩能力的唯一信息是Django团队提供的(我不是说什么要忽略它们,但这显然不是客观的信息…)

我的问题:

目前在Django上构建的“最大”站点是什么?(我主要通过用户流量来衡量规模) Django能每天处理10万名用户,每个用户访问站点几个小时吗? 像Stack Overflow这样的站点可以在Django上运行吗?


当前回答

我所知道的最大的django网站是华盛顿邮报,这肯定表明它可以很好地扩展。

好的设计决策对性能的影响可能比其他任何东西都要大。Twitter经常被认为是另一个基于动态解释语言的web框架——Ruby on Rails——体现了性能问题的站点——但Twitter工程师表示,该框架并不像他们早期所做的一些数据库设计选择那样是个大问题。

Django可以很好地使用memcached,并提供了一些管理缓存的类,这可以解决大部分性能问题。在现实中,你在网络上交付的东西几乎比你的后端更重要——使用像yslow这样的工具对于高性能web应用程序来说是至关重要的。你可以在后台添加更多硬件,但你不能改变你的用户带宽。

其他回答

尽管这里有很多很棒的答案,我只是想指出,没有人强调…

这取决于应用程序

如果你的应用程序写得比较少,因为你从DB中读取的数据比写的数据要多得多。然后缩放django应该是相当简单的,见鬼,它带来了一些相当不错的输出/视图缓存直接开箱即用。利用这一点,比如说,redis作为一个缓存提供商,在它前面放置一个负载均衡器,旋转n个实例,你应该能够处理非常大量的流量。

现在,如果你一秒钟要做几千个复杂的写?不同的故事。Django是一个糟糕的选择吗?好吧,不一定,这取决于您如何构建解决方案,以及您的需求是什么。

这只是我的个人意见:-)

看看这个叫做EveryBlock的微型新闻聚合器。

它完全是用Django编写的。事实上,正是他们开发了Django框架本身。

你完全可以用Django运行一个高流量的站点。看看这篇在django 1.0之前但仍然相关的文章:http://menendez.com/blog/launching-high-performance-django-site/

问题是不知道django是否可以伸缩。

正确的方法是理解和知道哪些网络设计模式和工具应该放在django/symfony/rails项目下,以实现良好的扩展性。

一些想法可以是:

多路复用。 反向代理。例如:Nginx,清漆 Memcache会话。例如:Redis 在项目和数据库上进行集群化,以实现负载平衡和容错:例如:Docker 使用第三方存储资产。例子:Amazon S3

希望它能有所帮助。这是我的小石头。

我用Django为爱尔兰国家广播公司开发高流量网站。这对我们来说很有效。开发一个高性能的网站不仅仅是选择一个框架。框架只是系统的一部分,它的强大程度取决于它最薄弱的环节。如果问题是数据库查询缓慢或服务器或网络配置糟糕,使用最新的框架'X'将无法解决您的性能问题。