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

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

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

我的问题:

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


当前回答

今天,我们使用许多网络应用程序和网站来满足我们的需求。其中大部分是非常有用的。我将向你展示一些python或django所使用的。

华盛顿邮报》

《华盛顿邮报》的网站是一个非常受欢迎的在线新闻来源,以配合他们的日报。它的大量视图和流量可以被Django web框架轻松处理。 华盛顿邮报- 5220万独立访客(2015年3月)

NASA

美国国家航空航天局的官方网站是关于他们正在进行的太空探索的新闻、图片和视频的地方。这个Django网站可以轻松处理大量的浏览量和流量。 月访问量200万人次

《卫报》

卫报是卫报媒体集团旗下的英国新闻和媒体网站。它几乎包含了《卫报》和《观察家报》的所有内容。这些巨大的数据是由Django处理的。 卫报(评论系统)- 4600万独立访问者(2014年10月)

YouTube

我们都知道YouTube是一个上传猫咪视频的地方,但失败了。作为现存最受欢迎的网站之一,它为我们提供了无穷无尽的视频娱乐。Python编程语言为它和我们喜爱的特性提供了支持。

DropBox

DropBox开启了在线文档存储革命,并已成为人们日常生活的一部分。我们现在几乎把所有东西都存储在云端。Dropbox允许我们使用Python的强大功能来存储、同步和共享几乎任何东西。

调查猴子

Survey Monkey是最大的在线调查公司。他们可以在重写后的Python网站上每天处理超过100万条回复。

Quora

Quora是在线提问和从个人社区获得答案的首选网站。在他们的Python网站上,相关的结果由这些社区成员回答、编辑和组织。

Bitly的

Bitly URL缩短服务和分析的大部分代码都是用Python构建的。他们的服务每天可以处理数以亿计的事件。

Reddit

Reddit被称为互联网的头版。它是基于数千种不同类别的在线查找信息或娱乐的地方。帖子和链接是用户生成的,并通过投票提升到顶部。Reddit的许多功能都依赖于Python。

Hipmunk

Hipmunk是一个在线旅游网站,通过比较顶级旅游网站来为你找到最优惠的价格。这个Python网站的工具可以让你找到你的目的地最便宜的酒店和航班。

点击这里了解更多: 25-of-the-most-popular-python-and-django-websites, What-are-some-well-known-sites-running-on-Django

其他回答

我们正在进行负载测试。我们认为我们可以支持240个并发请求(24x7每秒120次的持续速率),而不会显著降低服务器性能。那就是每小时432000次点击。响应时间并不小(我们的事务很大),但随着负载的增加,基线性能没有下降。

我们使用Apache前端Django和MySQL。操作系统为Red Hat Enterprise Linux (RHEL)。64位。我们在Django的守护模式下使用mod_wsgi。除了接受默认值外,我们没有做任何缓存或数据库优化。

我们都在一台64位戴尔的虚拟机中,(我想)有32Gb内存。

因为对于20或200个并发用户来说,性能几乎是相同的,所以我们不需要花费大量时间进行“调整”。相反,我们只需要通过普通的SSL性能改进、普通的数据库设计和实现(索引等)、普通的防火墙性能改进等来保持我们的基础性能。

我们测量的是我们的负载测试笔记本电脑在15个进程运行16个并发请求线程的疯狂工作负载下挣扎。

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

如果您的站点包含一些静态内容,那么在前面放置一个Varnish服务器将极大地提高您的性能。即使是一个盒子也能轻易产生100 Mbit/s的流量。

注意,对于动态内容,使用像Varnish这样的东西变得更加棘手。

扩展Web应用程序不是关于Web框架或语言,而是关于你的架构。 这是关于你如何处理你的浏览器缓存,你的数据库缓存,你如何使用非标准的持久性提供者(如CouchDB),你的数据库是如何调优的,还有很多其他的东西…

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

详情如下:

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

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

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

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

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

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

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

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

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