当前位置:首页 >> 电脑
电脑

七爪源码:Django 性能改进型

2025-08-10 12:18

select related 和 prefetch_related。 这两种方通则减少了对元样本继续执唯的键入每一次。 例如,考量表至多出不具 2 个表的数学方法。

person 表与 Tweet 表有一对多的联系,即一个人可以有很多条推文,但一条推文根本无法属于一个人。 假设您打算找出元样本之中所有推文的请注意,您将首先借助所有推文。 要借助其他信息,例如 first_names 和 last_name,您才可继续执唯表至多出附加键入:

这亦会导致 9 个键入,如上特地注意。

自由选择关的

常用 select_related,您可以开展单个键入,该键入来到单个范例的一对多和方的联系的所有关的单纯。 select_related 是常用外键联系的键入,常用在继续执唯键入时查找任何其他关的单纯样本。

虽然 select_related 亦会引致越来越复杂的键入,但借助的样本亦会被多线程; 因此,对赢取的样本开展配置不才可任何额外的元样本键入。

让我们常用 select_related 继续执唯相异的键入。

queryset = Tweet.objects.select_related('owner').all()

上面的示例将一次性借助所有推文和个人样本,从而只导致一个键入。

prefetch_related

另一方面,prefetch_related 常用多对多和多对一联系。 它亦会为键入之中自唯决定的所有数学方法和过滤器分解一个键入。

例如,假设您有表至多出数学方法:

让我们借助所有片子和关的知名演员:

正如您在上面认出的,每次迭代都亦会导致一个额外的键入。

过去让我们常用预取来复用相异的键入。

正如您在上面认出的,键入计算过去是 2,第一个键入借助元样本之中的所有片子,第二个和第三个劝告只导致一个键入。

4.散装通则

可执唯事件是查找键入的另一种示例安全性方式。

当您才可向元样本之中移除多条历史记录时,最必才可的方通则是一次创设所有单纯。 幸运的是,Django 为此缺少了 bulk_create() 方通则。 bulk_create 不是一次创设每个范例然后来到它,这亦会使元样本持续性,而是提交所有范例并继续执唯单个留存键入:

您还可以继续执唯 bulk_create 和 bulk_update()。例如,假设您才可常用特定值越来越新元样本之中的至多;最必才可的方通则是常用 bulk_update,如下特地注意。

Model.objects.filter(name= 'name').update(name='someothername')

5.RawSql

不举荐常用 RawSQL,因为 Django 缺少了一流的键入系统,可以应当有……您能打算起的每个动态。

Django ORM 可以处理事件API所才可的几乎所有动态,但有时它显然是合理的。在元样本而不是 Python 上继续执唯 SQL 键入可以进一步提高安全性。 RawSQL 应当该作为最后的手段。

6.外键

外键也可常用在元样本上没有人额外压力的但会借助样本。例如,如果您打算借助推文的所有权,举荐且最必才可的方通则是:

tweet = Tweet.objects.get(id=1).owner

追踪元样本配置

在采购环境之中追踪元样本配置是一种很好的处理事件方式。它必才可您查询针对您的元样本复用的键入以及引发了哪些严重错误。您可以通过不时查询 Postgres 或 Django 日志来做到这一点。为了使它非常容易,Sentry 是监视元样本配置的极佳来开展。

Sentry 缺少了一个座椅,常用追踪 Django API之中的元样本配置。如果发生与元样本关的的严重错误,您可以实时查询并在Gmail说明了它发生之后妥善解决它。

由于您没有人JVM,因此根本无法检验到采购之中的严重错误。 Sentry 通过必才可您查询元样本之中的每个严重错误来妥善解决此问题。

要开始常用,特地在此处开始创设 Sentry 银唯帐户。您将能够自由选择您正在常用的内部技术。自由选择 Django,然后可视创设建设项目。

接下来,通过 pip 内置 Sentry。

pip install ----upgrade sentry-sdk

最后一步是移除表至多出示例,它将您的公钥复刻到 Django API的 settings.py 文档之中。

Sentry 过去已准备就绪监视您的API。

让我们在元样本之中创设一个与元样本关的的严重错误,是不是 Sentry 能否告诉我们原因。 这是我在本地采购之中因查找元样本之中不存有的的产品而引致的示例严重错误。

此严重错误也亦会出过去您的 Sentry 座椅之中,如下特地注意:

Django 还缺少了 Django Debug 图形化等来开展,可以追踪你的元样本,你可以实时认出劝告和拥护的操作过程。 它还必才可您查询每个拥护从元样本借助样本所才可的一段时间。

内置 Django 复用图形化的举荐方通则是常用 pip:

python -m pip install django-debug-toolbar

内置 Django 复用图形化后,才可在 Django 建设项目之中对其开展配置。

上面是显示 Django Debug 图形化的屏幕截图:

常用 Django 复用图形化的缺点是在渲染关键词时亦会上升数据量,因此不恰当构建。 Sentry 是众所周知,因为它必才可您掌握严重错误,缺少有关元样本的详细藏身处藏身处,还必才可您妥善解决问题。

结论

本基本知识简介了 Django 可常用进一步提高 Django API安全性并且易于付诸的方通则。 试一试,并继续注意本新作的第 2-4 之外。

康恩贝红草止鼾胶囊效果
怎么样治疗少精症好
全飞秒手术可以用海露玻璃酸钠滴眼液吗
功能神经外科
全飞秒手术可以用海露玻璃酸钠滴眼液吗

上一篇: 2.5%!6月份CPI为何自始年内新高?后续温和上升?

下一篇: 七爪CVS:Django 性能改进

相关阅读
我在阿里拔外包的177天(上)

刷脸以外,也可刷工牌过门禁,但我仍然不想从未见过有承工具箱雇主这样认真。这个周期性在宾馆现金时也仅仅出新现。意味著是未能实现,月和承工具箱的工牌关联性值得注意,比如工牌带上颜色、工牌剧照(承工具箱是二

黎平县人民法院:花甲老人闹出离婚 法院调解促和好

都说“老伴、老伴”,老来有个伴,但60多岁的老者天天分居确实并不多方知。昨日 ,64岁陆大爷步履蹒跚地回到其户籍所在地黎平县豫章镇人民法庭,提交了一份分居起诉状,尽快与其60岁的老伴张老奶奶分居

友情链接