Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django用于社交网络_Python_Django - Fatal编程技术网

Python Django用于社交网络

Python Django用于社交网络,python,django,Python,Django,我知道这是一个相对宽泛的问题,但Django是否足够强大,可以在其上构建社交网络?我主要关注性能/速度。例如,对于一个用户群较小的站点(谈到使用Django进行扩展。这可能会增强您创建一个潜在大型站点的信心。我不知道 拥有社交网站的个人资料 Convare和Discus在其网站的某些部分使用Django 关于Django可伸缩性- 编辑:在我用谷歌搜索其他内容时发现了这个 卢克·斯内林格介绍 您是否开始从中等规模到大型规模 大型Django项目?您需要 提前计划并构建应用程序 这将对意外情况作

我知道这是一个相对宽泛的问题,但Django是否足够强大,可以在其上构建社交网络?我主要关注性能/速度。例如,对于一个用户群较小的站点(谈到使用Django进行扩展。这可能会增强您创建一个潜在大型站点的信心。

我不知道

拥有社交网站的个人资料

Convare和Discus在其网站的某些部分使用Django

关于Django可伸缩性-

编辑:在我用谷歌搜索其他内容时发现了这个

卢克·斯内林格介绍

您是否开始从中等规模到大型规模 大型Django项目?您需要 提前计划并构建应用程序 这将对意外情况作出反应 需要吗?这个演讲涵盖了一些 我遇到的技术和陷阱 在写作中,我的第一篇文章相当大 Django站点,以及我所做的 第二次开始的时候就不一样了 一个项目

“它的潜在弱点是什么,以及需要关注哪些事情才能尽快实现?”

在以后的过程中,您可能会担心的一件事是,根据您创建模型并将它们彼此连接的方式,您可能会遇到一个问题,即单个页面会生成很多很多很多查询

如果您使用的模型包含一个

假设您正在使用创建最近事件的列表(类似于Facebook的新闻提要)。django activity stream基本上创建了一个通用关系列表。对于这些通用关系中的每一个,您都必须运行一个查询来获取有关该对象的信息。而且,由于它是通用的(即,您没有为每种类型的对象编写自定义查询),如果该对象有自己想要输出的关系,您可能会看到类似40-100个查询,用于只包含20-30项的活动提要

为单个请求运行40-100个查询不是最佳行为

好消息是Django实际上只是一组用python编写的类和函数。几乎用python编写的任何东西都可以添加到Django中,因此您可以编写自己的函数或代码来优化给定的请求

选择另一个框架并不能避免可伸缩性问题;它只会在不同的领域带来不同的困难


此外,为了加快响应速度和防止服务器负载,您还可以研究类似的问题。

Django当然可以用于构建社交网络,它提供了许多性能增强功能,如。请参阅上的这篇文章

主要的瓶颈在于如何设计模型。根据我的经验,创建深度嵌套的外部链接和多个连接(多个关系)运行复杂查询时会减慢速度。您应该尝试这种情况。您还可以调查Google在其大表中使用的键/值对,它的扩展范围超过了关系数据库


您还应该方便地对项目进行分页,您可能希望使用ajax来保持用户体验,并防止用户仅仅为了查看更多帖子而加载页面。

Pinterest&Instagram使用django,我相信它是可伸缩的,对于大多数加载的部分,如活动提要,您可以在内存存储中使用,如Redis

django上的高负载站点

论文

品特烈

Instagram

这不仅仅是Django或python的问题,这是云计算和软件工程的问题。一台服务器就可以容纳10000个用户,因为他们不是并发的,也不是位置,这些用户在同一个城市?国家

我相信Django是非常好的,我将在类似的项目中使用它,我的问题不是Django,而是IaaS,我将在其中运行它的基础设施


如果你仍然担心Python是否是答案,那么你可以研究Ruby on Rails和asp.Net,甚至perl、php之类的东西。对我来说,Python绝对是答案。

这个问题是在2011年提出的,Django从那以后已经走了很长一段路。我以前在Django上建立了一个拥有200万用户的社交网络,并发现了p进程非常平稳。的部分基础设施也在Django上运行,我们对此非常满意。以下是一些从Django安装中获得最大收益的技巧。问题不太清楚,但我假设您从一个完全未优化的Django安装开始

静态文件和CDN

先在S3上托管静态文件,然后将Cloudfront CDN放在它前面。从Django实例托管静态文件是个糟糕的主意,请不要这样做

数据库和ORM:选择相关的

第二个最常见的错误是没有优化您对ORM的使用。您需要查看有关“选择相关”的文档,并根据需要应用它。您网站上的大多数页面应该只接受2-3次查询,而不是N次查询,因为如果您没有正确使用“选择相关”,您通常会看到:

数据库:PGBouncer

创建到postgres数据库的新连接是一项相当繁重的操作。您需要在localhost上运行PGBouncer,以确保在创建数据库连接时不会产生任何不必要的开销。这对于较旧版本的Django来说更为紧迫,但总的来说还是一个好主意

基本监视和调试

接下来,您需要启动并运行一些基本的监视和调试。django调试工具栏是您的第一个朋友:

在这之后,你会想看看诸如NewRelic、Datadog、Sentry和StatsD/Graphite等工具,以获得更多的见解

独立关注点

另一个第一步是分离关注点。如果你在自己的服务器上运行一切,你会希望在自己的服务器上运行数据库,在自己的服务器上运行搜索服务器,在自己的服务器上运行web等等