Python Django有规模吗?

Python Django有规模吗?,python,django,web-applications,scalability,Python,Django,Web Applications,Scalability,我正在用Django构建一个web应用程序。我选择Django的原因是: 我想使用免费/开源工具。 我喜欢Python,觉得它是一种长期的语言,而关于Ruby我不确定,PHP似乎是一个巨大的学习麻烦。 我正在为一个想法建立一个原型,没有过多考虑未来。开发速度是主要因素,我已经了解Python了。 我知道,如果我将来选择这样做,那么迁移到谷歌应用程序引擎会更容易。 我听说Django很好。 现在我越来越接近于考虑出版我的作品,我开始关注规模。我发现的关于Django的扩展能力的唯一信息是由Djan

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

我想使用免费/开源工具。 我喜欢Python,觉得它是一种长期的语言,而关于Ruby我不确定,PHP似乎是一个巨大的学习麻烦。 我正在为一个想法建立一个原型,没有过多考虑未来。开发速度是主要因素,我已经了解Python了。 我知道,如果我将来选择这样做,那么迁移到谷歌应用程序引擎会更容易。 我听说Django很好。 现在我越来越接近于考虑出版我的作品,我开始关注规模。我发现的关于Django的扩展能力的唯一信息是由Django团队提供的,我并没有说要忽略它们,但这显然不是客观的信息

我的问题是:

今天在Django上建立的最大的站点是什么?我主要通过用户流量来衡量大小 Django能否每天处理100000个用户,每个用户访问该网站几个小时? 像Stack Overflow这样的站点可以在Django上运行吗?
我对Django的经验很少,但我记得在Django的书中有一章,他们采访了运行一些更大的Django应用程序的人。我想这可以提供一些见解


它说,curse.com是最大的Django应用程序之一,一个月的页面浏览量约为6000-9000万次。

据我所知,最大的Django网站是,这肯定表明它可以很好地扩展

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


Django与memcached配合得非常好,并提供了一些用于管理缓存的类,您可以在这些类中解决大部分性能问题。实际上,在线交付的内容几乎比后端更重要——使用像yslow这样的工具对于高性能web应用程序来说至关重要。你总是可以在你的后端投入更多的硬件,但你不能改变你的用户带宽。

我肯定你在寻找一个更可靠的答案,但我能想到的最明显的客观验证是谷歌推动Django与它的框架一起使用。如果有人定期了解并处理可伸缩性问题,那就是谷歌。据我所知,最具限制性的因素似乎是数据库后端,这就是为什么谷歌使用自己的…

是的,它可以。它可以是带有Python的Django或RubyonRails。它仍然可以扩展

几乎没有什么不同的技术。首先,缓存不是可伸缩的。除了硬件平衡器之外,您还可以使用nginx作为前端来平衡多个应用程序服务器。 要在数据库方面进行扩展,如果您采用RDBMS的方式,那么在MySQL/PostgreSQL中使用read slave可以走得很远

Django流量大的网站的一些好例子可以是:

当他们还在那里的时候。 Discus通用共享评论管理器 所有与报纸相关的网站:华盛顿邮报和其他。
您会感到安全。

请注意,如果您预计每天有10万用户,一次活动数小时,即最多有20万以上并发用户,那么您将需要大量服务器。因此,大约有15000名注册用户,其中大多数可能每天都不活跃。虽然大部分流量来自未注册用户,但我猜他们中很少有人停留在网站上超过几分钟,即他们跟随谷歌搜索结果然后离开


对于该卷,预计至少有30台服务器。。。这仍然是一个相当高的每台服务器1000个并发用户数。

前几周我参加了EuroDjangoCon会议,这是几次会谈的主题,其中包括最大的Django网站Pownce slides的创始人。主要的信息是,您不必担心Django,而需要担心适当的缓存、负载平衡、数据库优化等问题


Django实际上对大多数这些东西都有钩子——特别是缓存,变得非常容易。

稍微扮演一点魔鬼代言人:

你应该检查一下,提交人,标题为为什么我讨厌Django,他几乎检查了Django缺少的一切,你可能想在一个高流量的网站上做的事情。最后,你必须以开放的心态接受这一切,因为编写如此规模的Django应用程序是完全可能的,但我认为这是一个很好的演示,与你的问题相关

今天在Django上建造的最大的站点是什么

没有任何一个地方可以收集Django构建的站点上的流量信息,所以我必须尝试使用来自不同l 定位。首先,我们在的首页上有一个Django站点列表,然后在上有一个Django构建站点列表。浏览列表,挑选一些我知道流量不错的:

:2013年有7000万用户

:

:,参见Ned Batcheld的帖子

:排名约179k

不再活动:排名约65k。 Pownce的Mike Malone在他的EuroDjangoCon演示中说每秒有数百次点击。这是一个关于如何扩展Django的非常好的演示,并提出了一些优点,包括Django可伸缩性中当前的缺点

HP使用Django 1.5构建了一个站点:。然而,对于novemer/2015,整个网站已迁移,此链接只是重定向。该网站是一项全球服务,用于订阅HP提供的Instant Ink和相关服务*

Django能否每天处理100000个用户,每个用户访问该网站几个小时

是的,见上文

像Stack Overflow这样的站点可以在Django上运行吗

我的直觉是肯定的,但正如其他人回答的和Mike Malone在他的演讲中提到的那样,数据库设计至关重要。如果我们能找到任何可靠的流量统计数据,也可以在www.cnprog.com上找到有力的证据。不管怎么说,这不仅仅是一堆Django模型所带来的结果:

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

关于的博客文章被描述为一篇文章。和


*编辑的作者,包括这样的参考,曾经在那个项目中作为外包开发人员工作。

我们现在正在做负载测试。我们认为,我们可以支持240个并发请求,保持每秒120次的24x7命中率,而不会显著降低服务器性能。这将是每小时432000次点击。响应时间并不小,我们的事务量很大,但随着负载的增加,我们的基线性能不会下降

我们正在使用Apache前端Django和MySQL。操作系统是Red Hat Enterprise Linux RHEL。64位。我们在Django的守护进程模式中使用mod_wsgi。除了接受默认值,我们没有进行缓存或数据库优化

我们都在一个64位Dell上的虚拟机中,我想是32Gb RAM

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


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

另一个例子是俄罗斯运输时间表服务rasp.yandex.ru。它的参与满足了您的需求。

扩展Web应用程序与Web框架或语言无关,而是与您的体系结构有关。
这是关于如何处理浏览器缓存、数据库缓存、如何使用非标准的持久性提供程序,例如,数据库和其他许多东西的调优程度……

您肯定可以在Django运行高流量站点。查看这篇Django 1.0之前但仍然相关的文章:

如果你有一个包含一些静态内容的站点,那么在前面放置一台服务器将显著提高你的性能。即使是一个单一的盒子也可以轻松地吐出100 Mbit/s的流量


请注意,对于动态内容,使用Varnish之类的工具会变得更加棘手。

我已经使用Django一年多了,我对它如何将模块性、可伸缩性和开发速度结合起来印象深刻。与任何技术一样,它也伴随着学习曲线。然而,Django社区的优秀文档使这条学习曲线变得不那么陡峭。Django能够很好地处理我扔给它的每件事。看起来它将能够很好地扩展到未来

是一个中等规模的Django网站。这是一个非常动态的网站,每天处理大量的页面浏览量

今天在Django上建立的最大的站点是什么?我主要通过用户流量来衡量大小

在美国,情况的确如此。我听说他们每月处理大约1000万张单张支票。现在,2019年,Mahalo由Ruby on Rails提供动力

在国外,该网络是巴西的新闻、体育和娱乐网站网络;Alexa目前将他们排在全球前100名的第80位左右

其他著名的Django用户包括PBS、国家地理、探索、美国宇航局以及国会图书馆

Django能否每天处理10万用户,每个用户访问该网站几个小时

是的-但前提是您正确编写了应用程序,并且拥有足够的硬件。Django不是一颗神奇的子弹

像StackOve这样的网站可以吗 rflow在Django上运行

是的,但见上文


技术方面,很容易:只需一次尝试即可。就流量而言,Competite pegs StackOverflow每月低于100万Unique。我至少能说出十几个Django网站的名字,它们的流量都比Django网站的流量大。

以下是一些在Django中构建的比较引人注目的东西:

卫报的应用程序

Politifact.com下面是一个关于积极经验的讨论。该网站赢得了普利策奖

纽约时报的应用程序

WaPo的程序员之一Peter Harkins在他的博客上写道

有点老了,但是洛杉矶时报的人告诉我他们为什么和Django一起去

洋葱的AV俱乐部最近从Drupal搬到了Django

我想这些网站中有很多每天的点击量可能超过10万次。Django每天肯定可以点击10万次甚至更多。但是,根据你正在建设的内容,YMMV很难让你的特定站点到达那里

Django级别有一些缓存选项,例如在中缓存查询集和视图可以创造奇迹,甚至可以超越上游缓存,如。数据库服务器规范也将是一个因素,并且通常是一个挥霍的地方,正如您对它的调优程度一样。例如,不要假设Django会正确设置索引。不要认为默认或配置是正确的

此外,如果Django运行缓慢,您始终可以选择让多个应用程序服务器运行Django,并在前面安装一个软件或硬件负载平衡器


最后,您是否在与Django相同的服务器上提供静态内容?您使用的是Apache或类似的工具吗?你能负担得起使用静态内容的费用吗?这些都是需要考虑的事情,但都是推测性的。每天点击10万次并不是唯一的变量:你想花多少钱?您在管理所有这些组件方面有多少专业知识?你需要花多少时间来整理这些信息?

看看这个名为“微新闻聚合器”的网站


它完全是用丹戈语写的。事实上,他们正是开发Django框架本身的人。

YouTube的开发倡导者给出了一个建议,这也与扩展Django有关


YouTube有不止一个网站,YouTube是基于Python构建的。

不确定每天的访问量,但这里有几个大型Django网站的例子:

注释系统使用Django
这里是一个链接,指向以下列表。

平均分配任务,简而言之,优化每个方面,包括数据库、文件、图像、CSS等。一旦您的站点/应用程序开始增长,就需要使用其他资源平衡负载。或者你为它创造更多的成长空间。CDN、云等最新技术的实施对于大型站点来说是必不可少的。仅仅开发和调整一个应用程序不会给你百分之几的满足感,其他组件也起着重要作用。

我想我们不妨将2011年苹果年度应用程序添加到使用django的列表中。

我为爱尔兰的国家广播公司开发了使用django的高流量网站。它对我们很有效。开发一个高性能的站点不仅仅是选择一个框架。一个框架只会是一个系统的一部分,它的强大程度与其最薄弱的环节一样。如果问题是数据库查询速度慢或服务器或网络配置不当,那么使用最新的框架“X”无法解决性能问题。

问题在于不知道django是否可以扩展

正确的方法是理解并知道哪些是网络设计模式和工具,可以放在django/symfony/rails项目下以更好地扩展

一些想法可以是:

多路复用。 反向代理。例:Nginx,清漆 Memcache会话。例:Redis 在项目和数据库上实现集群化以实现负载平衡和容错:例如:Docker 使用第三方存储资产。例:亚马逊S3
希望能有点帮助。这是我山上的一块小岩石。

我不认为问题真的与Django缩放有关

我真的建议您研究一下您的体系结构,这将帮助您满足扩展需求。如果您弄错了,那么Django的性能就没有意义了。性能!=规模您可以拥有一个性能惊人但不可扩展的系统,反之亦然

您的应用程序数据库是否已绑定?如果是这样,那么你的规模问题也存在。您打算如何与来自Django的数据库交互?当数据库不能像Django接受请求那样快速处理请求时,会发生什么情况?当您的数据超出一台物理机器时会发生什么情况。你需要说明你打算如何处理这些情况

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

简而言之,语言并不是决定规模的因素, 一种语言负责性能根据您的应用程序,不同的语言的性能不同。正是您的设计和体系结构使缩放成为现实


我希望它能帮助您,如果您有任何疑问,我将很高兴进一步提供帮助。

如高性能中所述 经历这一切

详见下文所述的更多详情:

经常听到人们说“Django不可伸缩”。根据你的看法,这个陈述要么完全正确,要么明显错误。Django本身无法扩展

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

然而,好消息是,Django与一套缓存和 负载平衡工具,允许它扩展到尽可能多的流量

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

Discus每月的页面浏览量超过80亿次。这是一些巨大的数字

这些团队已经证明了Django确实具有规模。 我们在林肯环路的经验支持这一点

我们已经建立了大型Django网站,能够在Reddit主页上度过一天而不必流汗

Django的伸缩成功案例几乎不胜枚举


它支持Discus、Instagram和Pinterest。需要更多的证据吗?Instagram能够在Django上支持超过3000万用户,只有3名工程师,其中2名没有后端开发

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

Python非常好,但它是一种解释语言,这使得它的速度很慢。但是有许多加速器和缓存服务部分地解决了这个问题

如果您正在考虑快速开发,那么RubyonRails是最好的。该ROR框架的主要宗旨是为开发人员提供舒适的体验。如果比较一下Ruby和Python,它们的语法几乎相同

谷歌应用程序引擎是一个很好的服务,但它会把你束缚在它的范围内,你没有机会尝试新事物。取而代之的是,你可以使用云计算,对于最简单的水滴,每月只需支付5美元的费用。是另一项免费服务,您可以在其中部署产品

对!!对您所听到的完全正确,但这里有一些使用其他技术的示例

Rails:Github、Twitter、Shopify、Airbnb、Slideshare、Heroku等。 PHP:Facebook、Wikipedia、Flickr、Yahoo、Tumbler、Mailchimp等。
结论是一个框架或语言不能为你做一切。更好的架构、设计和策略将为您提供一个可扩展的网站。Instagram就是一个最大的例子,这个小团队正在管理如此巨大的数据。这里有一篇关于它的架构的文章,你必须阅读。

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

这取决于应用程序

如果您的应用程序很少写,例如,您从数据库中读取的数据比您正在写的要多得多。那么,扩展django应该是相当简单的,见鬼,它附带了一些相当不错的输出/视图缓存。利用这一点,比如说,redis作为缓存提供程序,在它前面放置一个负载平衡器,启动n个实例,你应该能够处理大量的流量

现在,如果你必须一秒钟完成数千次复杂的写操作?不同的故事。Django会是个糟糕的选择吗?当然,这不一定取决于您如何真正构建解决方案,以及您的需求是什么


只有我的两分钱:-

今天,我们使用许多web应用程序和网站来满足我们的需求。其中大多数都非常有用。我将向您展示python或django使用的一些方法

《华盛顿邮报》的网站是一个非常受欢迎的在线新闻来源,与他们的日报相伴。DjangoWeb框架可以轻松处理其庞大的视图和流量。 华盛顿邮报-2015年3月5220万独立访客

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

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

我们都知道YouTube是上传猫视频的地方,但失败了 . 作为现存最流行的网站之一,它为我们提供了无尽的视频娱乐时间。Python编程语言为它提供了强大的功能和我们喜爱的特性

DropBox开始了在线文档存储革命,这已经成为日常生活的一部分。我们现在几乎所有东西都存储在云中。Dropbox允许我们使用Python的强大功能存储、同步和共享几乎所有内容

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

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

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

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

Hipmunk是一个在线消费者旅游网站,它比较顶级旅游网站,为您找到最划算的交易。这个Python网站的工具允许您找到目的地最便宜的酒店和航班

单击此处了解更多信息: ,

今天在Django上建立的最大站点是什么?我主要通过用户流量来衡量大小 详情如下:

Django能否每天处理100000个用户,每个用户访问该网站几个小时? 是的,但要使用适当的体系结构、数据库设计、缓存、负载平衡和多个服务器或节点

像Stack Overflow这样的站点可以在Django上运行吗?

是的,只需按照第二个问题中提到的答案进行操作

从播客中可以看出,它只使用了3台服务器。但同样是用C语言构建的,而不是Python,所以它是rips。显然,问题是:它们有多少强大的服务器?同样令人好奇的是:您的DB是在同一台机器上运行,还是在一台单独的服务器上运行?一台带有Apache、Django和MySQL的VM。mod_wsgi。RHEL。性能指标有什么更新吗?我和Django合作多年了,除了一个大多是只读的玩具应用程序之外,我从来没有在任何其他应用程序中看到过这种性能。您的应用程序的性质是什么?任何有模板、中间件、会话或数据库连接的东西,如果没有大量的缓存来绕过所有这些,就永远不会支持每秒120次的点击。我认为432000这个数字是误导性的。这完全取决于您对该用户的操作,而不仅仅是在Django上运行的washingtonpost.com的一部分?Django首页似乎表明,只有你可能把《华盛顿邮报》和《华盛顿时报》搞混了。我相信《泰晤士报》都在Django上,但它是一份小得多的报纸。Web框架确实很重要!看看tornado与其他PythonWebFramework相比有多快:我没有投反对票,但我想你有点偏离了主题,因为他们讨论了django的优点,你不能在每个给定的框架中使用每个数据库、调优数据库和最大限度地使用couchdb。当然,除非你不重写其中的大部分内容。@ZLR我不认为我偏离了主题。他问Django是否可以扩展,我说是的,因为几乎所有现代web框架,无论使用何种语言,只要使用正确的体系结构方法,都可以扩展是的,根据Tornado的例子,阻塞和非阻塞IO确实很重要。尽管如此,Tornado不是一个web框架,但您的应用程序需要以一种利用非阻塞IO的方式编写。使用Tornado,编写阻塞IO代码非常容易。这并不能提供高并发性。框架其实并不重要,但youtube不是用django构建的。Python可能是快速的,但对于Django来说不是这样,但关键是Django增长了,它正处在一个很好的基础上,用于速度重构,而谷歌在那里工作的项目如无载吞咽,它会变得更好。Flickr不是一天建成的。似乎Cal反复提到的几个问题现在都是标准功能:curse.com URL现在以.aspx结尾。。。不知道他们是不是在说。。。死亡的社交网络是一个糟糕的可伸缩性示例:我认为死亡的力量与可伸缩性问题无关。这里的问题是varnish将显著提高所有东西的性能。更快的框架仍然会更快。推广Django/Python可能与谷歌推广Python作为选择C++后的“其他”语言有关,当我不得不使用GAE时,它非常接近于龙卷风之类的东西……你能估计每秒5000个点击量的近似价格,假设其类似LinkedIn,使用Django。假设一个普通的程序员已经构建了这个站点,当然也添加了缓存。A.
假设算法etcto使事情变得更快,但我还没有使用它们。@user2349115当你的应用程序获得每秒5000次点击时,你将有足够的背景知识来理解为什么问这个问题是错误的。我的ninjas Wrappayzer浏览器扩展称mahalo是ruby on rails,已于2019年3月启动。Django发展可以很快。Django是为有期限的完美主义者提供的web框架。如果您还没有,我建议您阅读Django书籍中关于扩展的部分:或更新版本:如果您谈论的是执行速度或开发工作,那么可能需要确定速度是主要因素。这听起来像是开发工作,这很有意义。将其与RoR进行比较会很有趣。@ajkumar25,AFAIK Dischs使用django。问题应该是django中的扩展成本是多少?每个block都已合并到NextDoor中。