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

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

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

我的问题:

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


当前回答

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

这取决于应用程序

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

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

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

其他回答

如果你想使用开源,那么你有很多选择。但是python是其中最好的,因为它有很多库和一个超级棒的社区。 下面这些原因可能会改变你的想法:

Python is very good but it is a interpreted language which makes it slow. But many accelerator and caching services are there which partly solve this problem. If you are thinking about rapid development then Ruby on Rails is best among all. The main motto of this(ROR) framework is to give a comfortable experience to the developers. If you compare Ruby and Python both have nearly the same syntax. Google App Engine is very good service but it will bind you in its scope, you don't get chance to experiment new things. Instead of it you can use Digital Ocean cloud which will only take $5/Month charge for its simplest droplet. Heroku is another free service where you can deploy your product. Yes! Yes! What you heard is totally correct but here are some examples which are using other technologies Rails: Github, Twitter(previously), Shopify, Airbnb, Slideshare, Heroku etc. PHP: Facebook, Wikipedia, Flickr, Yahoo, Tumbler, Mailchimp etc.

结论是一个框架或语言不会为你做所有的事情。一个更好的架构,设计和策略会给你一个可扩展的网站。Instagram是最大的例子,这个小团队管理着如此庞大的数据。这里有一个关于它的架构的博客,一定要读。

平均分配任务,简而言之,优化每个方面,包括db,文件,图像,CSS等,并平衡其他资源的负载,一旦你的网站/应用程序开始增长是必要的。或者你给它更多的生长空间。大型网站必须采用CDN、Cloud等最新技术。仅仅开发和调整一个应用程序不会给你百分之百的满意度,其他组件也发挥着重要作用。

我认为问题并不在于Django的伸缩性。

我真的建议你研究一下你的架构,这将有助于你的扩展需求。如果你弄错了,Django的性能就没有意义了。性能=规模。你可以拥有一个具有惊人性能但无法扩展的系统,反之亦然。

您的应用程序是否绑定了数据库?如果是,那么你的规模问题也存在。你打算如何与Django中的数据库交互?如果数据库处理请求的速度不及Django接收请求的速度,会发生什么?当您的数据超出一台物理机器时会发生什么。你需要考虑如何应对这些情况。

此外,当你的流量超过一个应用服务器时会发生什么?在这种情况下,如何处理会话是很棘手的,通常情况下,您可能需要一个共享的“无”架构。这取决于你的应用。

简而言之,决定规模的不是语言,而是语言的性能(同样取决于您的应用程序,不同的语言表现不同)。正是您的设计和架构使扩展成为现实。

我希望它能有所帮助,如果你有问题,我很高兴能进一步帮助你。

目前在Django上构建的“最大”站点是什么?(我主要通过用户流量来衡量规模) Pinterest disqus.com 更多信息请点击:https://www.shuup.com/en/blog/25-of-the-most-popular-python-and-django-websites/

Django能每天处理10万名用户,每个用户访问站点几个小时吗? 是的,但是要使用正确的架构,数据库设计,使用缓存,使用负载平衡和多个服务器或节点

像Stack Overflow这样的站点可以在Django上运行吗? 是的,只需要按照第二个问题中提到的答案

我有点唱反调:

你应该看看calhenderson在Django con 2008的主题演讲,标题是“为什么我讨厌Django”,他在演讲中详细介绍了Django在高流量网站中所缺少的所有功能。最后,你必须以开放的心态看待这一切,因为编写可伸缩的Django应用程序是完全可能的,但我认为这是一个很好的演示,与你的问题相关。