快速提示:如何加速 Django 应用程序

快速提示:如何加速 Django 应用程序

提高 Django 应用程序性能的简短指南

Photo by 费萨尔 on 不飞溅

避免使用 Django 模型序列化器

Django rest 框架允许开发人员快速发布应用程序。 Django 序列化器允许将复杂数据(例如查询集和模型实例)转换为原生 Python 数据类型。然而,Modelserializer 的代价是使用序列化器的端点性能不佳。这种较差的性能很常见,尤其是在处理大型数据集时。建议编写序列化程序,将只读字段设置为不可写字段,或缓存模型实例。

使用生成器

不要尝试编写迭代;使用 Python 发电机() 使您的迭代更快的功能。例如,如果您需要生成大量值,则使用生成器是最佳解决方案。

异步请求

同步编程是任务按顺序排列的地方。所有任务都遵循特定的顺序;这意味着每个任务在下一个任务开始之前从头到尾完成。

同步编程的一个缺点是,如果某个特定任务的执行时间相当长,那么前面的任务必须等待该任务完成;这会导致延误。

然而,异步编程意味着任务可以在不等待其他作业完成执行的情况下同时发生。

异步通信主要用于聊天应用程序以及显示实时数据的应用程序。

异步编程节省了从 API 获取数据的时间。从 API 获取数据或发出 http 请求通常需要比预期更长的时间;您可以在 http 调用上应用异步函数,而不是等待 http 请求完成。

Async 调用释放程序以继续在其他区域执行。

异步编程的另一个优点是,如果您正在发出多个请求,并且其中一个请求突然停止,这不会影响其他请求,因为允许程序移动到下一个任务。

假设您有一个应用程序多次向外部 api 服务器请求;使用同步编程,应用程序将不得不等到正在进行的 api 完成 HTTP 请求并返回响应,从而使您的应用程序变慢。

例如,假设我们要请求一个外部 API,例如天气 Api;让我们比较一下使用同步和异步调用的时间。

同步函数将如下所示

上面的函数查询 Weather API 并返回世界上一些最受欢迎的城市的当前天气。

当前天气和查询每个城市的 API 所需的总时间将是:

 18.0 0.74 23.0 1.15 28.0 1.56 41.0 1.96 29.0 2.37 40.0 2.78

让我们在下面的帮助下重写上面的函数 httpx . Httpx 是一个支持同步和异步HTTP请求的python客户端。

首先通过pip安装客户端

 点安装httpx

接下来编写如下所示的异步函数:

https://gist.github.com/essykings/085073b5eb93b3b6fc1cfdf35c2d6b2c

当前天气和查询每个城市的天气所需的总时间将是:

 16.0 0.47 23.0 0.70 28.0 0.90 41.0 1.11 29.0 1.31 40.0 1.52

如您所见,上面的时间大约是同步函数的一半(即 1.52 vs 2.78 ),这是一个很大的性能改进。

加入我的电子邮件列表以获取更多 Python 内容

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/39700/31332909

posted @ 2022-09-29 09:31  哈哈哈来了啊啊啊  阅读(52)  评论(0编辑  收藏  举报