我正在用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应用程序来说是至关重要的。你可以在后台添加更多硬件,但你不能改变你的用户带宽。

其他回答

"What are the largest sites built on Django today?" There isn't any single place that collects information about traffic on Django built sites, so I'll have to take a stab at it using data from various locations. First, we have a list of Django sites on the front page of the main Django project page and then a list of Django built sites at djangosites.org. Going through the lists and picking some that I know have decent traffic we see: Instagram: What Powers Instagram: Hundreds of Instances, Dozens of Technologies. Pinterest: Alexa rank 37 (21.4.2015) and 70 Million users in 2013 Bitbucket: 200TB of Code and 2.500.000 Users Disqus: Serving 400 million people with Python. curse.com: 600k daily visits. tabblo.com: 44k daily visits, see Ned Batchelder's posts Infrastructure for modern web sites. chesspark.com: Alexa rank about 179k. pownce.com (no longer active): alexa rank about 65k. Mike Malone of Pownce, in his EuroDjangoCon presentation on Scaling Django Web Apps says "hundreds of hits per second". This is a very good presentation on how to scale Django, and makes some good points including (current) shortcomings in Django scalability. HP had a site built with Django 1.5: ePrint center. However, as for novemer/2015 the entire website was migrated and this link is just a redirect. This website was a world-wide service attending subscription to Instant Ink and related services HP offered (*). "Can Django deal with 100,000 users daily, each visiting the site for a couple of hours?" Yes, see above. "Could a site like Stack Overflow run on Django?" My gut feeling is yes but, as others answered and Mike Malone mentions in his presentation, database design is critical. Strong proof might also be found at www.cnprog.com if we can find any reliable traffic stats. Anyway, it's not just something that will happen by throwing together a bunch of Django models :)

当然,还有更多感兴趣的网站和博主,但我必须在某个地方停下来!


一篇关于使用Django构建高流量网站michaelmoore.com的博文,将其描述为排名前10,000的网站。Quantcast数据和compete.com数据。


(*)编辑的作者,包括这些引用,曾经在该项目中作为外包开发人员工作。

前几周我参加了EuroDjangoCon会议,这是几个演讲的主题——其中包括最大的django网站Pownce的创始人(幻灯片来自其中一个演讲)。主要的信息是,你不必担心Django,而是像适当的缓存,负载平衡,数据库优化等。

实际上,Django已经为这些事情提供了钩子——尤其是缓存,它变得非常简单。

另一个例子是俄罗斯的交通时刻表服务。它的出勤率符合你的要求。

请注意,如果您希望每天有10万用户,并且一次活跃数小时(意味着最多有2万+并发用户),那么您将需要大量的服务器。SO有大约1.5万名注册用户,其中大多数人可能不是每天都活跃。虽然大部分流量来自未注册用户,但我猜他们中很少有人在网站上停留超过几分钟(即他们关注谷歌搜索结果后离开)。

对于这样的容量,预计至少需要30台服务器……这仍然是相当沉重的,每台服务器有1000个并发用户。

正如在高性能Django书中所述 然后查一下卡尔·亨德森

详情如下:

人们经常会说“Django无法伸缩”。这取决于你如何看待它,这种说法要么完全正确,要么明显错误。Django本身是无法伸缩的。

Ruby on Rails、Flask、PHP或数据库驱动动态网站使用的任何其他语言也是如此。

不过,好消息是Django与缓存和缓存套件的交互非常漂亮 负载平衡工具将允许它扩展到尽可能多的流量,你可以扔在它。

与你在网上看到的相反, 它可以做到这一点,而不需要替换通常被标记为“太慢”的核心组件,如数据库ORM或模板层。

Disqus每月的页面浏览量超过80亿次。这些都是很大的数字。

这些团队已经证明了Django的扩展性。 我们在林肯环线的经验证明了这一点。

我们已经建立了大型的Django站点,可以让用户在Reddit主页上轻松浏览一整天。

Django在伸缩方面的成功案例不胜枚举。

它支持Disqus、Instagram和Pinterest。想要更多的证据吗?只用3个工程师(其中2个没有后端开发),Instagram就能在Django上维持超过3000万的用户