Django 3.0 发布,开始支持异步功能
Django 3.0 发布了,此版本带来了一些新特性,其中最值得关注的应当是其开始支持异步功能。
此前我们报导过,有草案提出要让 Django 支持异步。聚集于 HTTP 中间件视图和 ORM,开发者要在 Django 中添加异步支持,同时维护对同步 Python 的支持,并且将完全向后兼容。
该设想最终会替换掉 Django 中的大多数阻塞部分,包括 Session、Auth、ORM 与 Handlers 等,使其原生支持异步。而同步 API 将继续存在并得到完全支持,其中一些最终将转变为原生异步代码的同步包装器。
ASGI 模式将 Django 作为原生异步应用程序运行,原有的 WSGI 模式将围绕每个 Django 调用运行单个事件循环,以使异步处理层与同步服务器兼容。
在这个改造的过程中,每个特性都会经历以下三个实现阶段:
- Sync-only,只支持同步,也就是当前的情况
- Sync-native,原生同步,同时带有异步封装器
- Async-native,原生异步,同时带同步封装器
Django 3.0 开始提供运行 ASGI 应用支持,让 Django 逐渐具备异步功能。做了这一改动后,Django 现在会感知到异步事件循环,并将阻止从异步上下文调用标记为“异步不安全”的代码(例如 ORM 操作),如果开发者之前使用的是异步代码,则可能会触发。如果看到 SynchronousOnlyOperation 错误,可以仔细检查代码并将数据库操作移到同步子线程中。
其它方面,Django 现在支持 MariaDB 10.1 及更高版本;新的 ExclusionConstraint 类可以在 PostgreSQL 上添加排除约束;输出 BooleanField 的表达式现在可以直接在 QuerySet 过滤器中使用,而无需先注解然后对注解进行过滤;自定义枚举类型 TextChoices、IntegerChoices 和 Choices 现在可用作定义 Field.choices 的方法。
此外还有一些小改动,详情查看更新说明:
需要注意的是,Django 3.0 支持 Python 3.6、3.7 与 3.8,Django 2.2.x 系列是最后一个支持 Python 3.5 的系列。官方同时也建议第三方应用作者放弃对 Django 2.2 之前的所有版本的支持。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Spring Boot 2.2.0.M6 发布
Spring Boot 2.2.0.M6已发布,可以从里程碑仓库获取。 下一个 2.2 版本将是本月晚些时候的 RC1,GA 则会在 10 月中旬推出。 此版本更新内容如下: 新特性 提供公共 API,用于根据响应的状态代码确定请求的结果#18150 改进 WebMvcTags 中非标准状态代码的处理#17998 使用任何 JavaMigration bean 自动配置 Flyway#17993 添加了 Issuer Validation 的其他资源服务器配置#17953 默认配置 ping(以前的应用程序)运行状况指示器#17926 删除默认的 favicon#17925 添加了对 dev-tools yaml 配置的支持#17915 绕过远程 devtools 端点的 Spring Security 身份验证#17878 在 Windows 上使用带有 cygwin 的 CLI 时支持多个驱动器#17872 允许通过属性配置 Jetty 的线程池#17871 使 AbstractErrorWebExceptionHandler 中的 logError() 可重写#17863 在依赖...
- 下一篇
Dart 2.5 发布,支持 Dart 与 C 相互调用
Dart 2.5 已经发布了,其中包括两个主要预览新特性:机器学习(ML)驱动的代码补全和 dart:ffi外部函数接口,用于直接从 Dart调用 C 代码。Dart2.5 还改进了对常量表达式的支持。具体如下: ML Complete,按机器学习排序的代码补全 通过分析 GitHub 上Dart 代码的大量语料库,训练基于给定上下文的可能出现的成员的模型来实现的,这个模型由 TensorFlow Lite 驱动,可以用来预测开发人员正要编辑的代码,这个新特性称为ML Complete。 假设编写一个小程序,用来计算从当前时间到某一天的时间。使用 ML Complete,如下所示(第一张图)。首先,它能够根据变量名称为now 自动提供DateTime.Now() 补全 。接下来,定义变量名 tomorrow,使用add(…) 方法。在非 ML Complete 中(第二张图),必须手动开始输入 Datetime 才会有提示补全,而且 add() 方法在补全提示的列表中的位置相对低。 ML Complete可以在所有支持 Dart 的编辑器中使用,包括 Android Studio、In...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Red5直播服务器,属于Java语言的直播服务器
- CentOS6,CentOS7官方镜像安装Oracle11G
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池