专栏首页Debian中国Django 3.0 发布第一个版本 开始支持异步功能

Django 3.0 发布第一个版本 开始支持异步功能

Django 3.0 发布了第一个版本3.0a1,正式版版本将于今年12月份发布。3.0版的Django带来了一些新特性,其中最值得关注的应当是其开始支持异步功能。

django路线图

此前有草案提出要 让 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 之前的所有版本的支持。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Ubuntu 17.04(Zesty Zapus)正式版发布

    今天,2017 年 4 月 13 日,Canonical 官方发布了 Ubuntu 17.04(Zesty Zapus)的最终版。自从去年十月发布 Ubuntu...

    Debian社区
  • 为什么 Django 能持续统治 Python 开发世界

    对于 Python 开发者来说,web 开发框架真可谓玲琅满目。然而 Django , 毋庸置疑的成为最受青睐的 web 框架。通过本篇博客,我来为大家讲解下为...

    Debian社区
  • 腾讯在贵州有个山洞:放置腾讯业务最核心数据

    4月1日,腾讯公司发布了一段短片,跟大家开了个愚人节玩笑。腾讯宣布,筹备近两年的“AI生态鹅厂”已在贵州贵安新区完成项目主体建设,预计于年内投产运行。由于企鹅所...

    Debian社区
  • Ajax 同步与异步请求

    ajax对象.open(方式get/post, url地址, [异步true]同步false);

    Debug客栈
  • Linux命令行监控程序,还能实时高亮显示差异,我就选它了

    watch用于定期运行任意命令,并在终端窗口上显示该命令的输出。当你必须重复执行命令并观察命令输出随时间变化时,它非常有用。

    程序员小助手
  • Linux 命令(122)—— watch 命令

    watch 是一个非常实用的命令,基本所有的 Linux 发行版都带有。如同名字一样,watch 可以帮助监测一个命令的运行结果,省得我们一遍遍地手动运行。比如...

    Dabelv
  • C语言保留字(关键字)详解

    保留字又称关键字。指在高级语言中已经定义过的字,使用者不能再将这些字作为变量名或过程名使用。每种程序设计语言都规定了自己的一套保留字。例如:BASIC语言规定不...

    老九学堂-小师弟
  • python3+opencv3人脸识别入

    https://blog.csdn.net/qq_30310799/article/details/80829930 本文章有circle函数的介绍

    py3study
  • 运营必读 |“用户金字塔模型”在社区产品中的重要性

    用户1756920
  • 斯坦福大学《机器学习》课程-中文版笔记(2.1)

    AI传送门

扫码关注云+社区

领取腾讯云代金券