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

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

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

我的问题:

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


当前回答

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

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

一些想法可以是:

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

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

其他回答

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

详情如下:

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

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

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

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

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

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

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

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

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

目前在Django上构建的“最大”站点是什么?(我主要通过用户流量来衡量规模)

在美国,是Mahalo。我听说他们一个月要处理大约1000万份。现在,在2019年,Mahalo由Ruby on Rails支持。

在国外,Globo网络(巴西的新闻、体育和娱乐网站网络);Alexa将它们排在全球前100名(目前大约排在第80位)。

其他著名的Django用户包括PBS、国家地理、探索、NASA(实际上是NASA内部的许多不同部门)和国会图书馆。

Django能处理每天10万用户,每个用户访问站点几个小时吗?

是的——但前提是您编写了正确的应用程序,并且有足够的硬件。Django不是灵丹妙药。

像StackOverflow这样的网站可以在Django上运行吗?

是的(但请参见上文)。

在技术方面,很容易:请参阅soclone。在流量方面,compete将StackOverflow固定在每月100万次以下。我能说出至少十几个流量超过SO的Django站点。

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

YouTube的开发者倡导者在PyCon 2012上做了一个关于扩展Python的演讲,这也与扩展Django有关。

YouTube拥有超过10亿用户,而YouTube是建立在Python之上的。

不知道每天的访问量有多少,但这里有一些大型Django站点的例子:

Disqus.com(来自djangocon的演讲) bitbucket。org(写作) lanyrd.com(源) support网站(源代码) Addons.mozilla.org(源代码)(来自django的谈话) Theonion.com网站 uk评论系统使用Django(来源) instagram pinterest rdio

这里是Quora上高流量Django网站的链接。