Django 3.0 将支持异步功能

  本文转自:oschina

  根据 Django 的项目目录,Django 异步功能草案(DEP 0009)已被技术委员会通过,预计将在 3.0 中正式引入。

  

  该 DEP 主要关注 HTTP 中间件视图和 ORM,要在 Django 中添加异步支持,同时维护对同步 Python 的支持,并且将完全向后兼容。

  最终会替换掉 Django 中的大多数阻塞部分,包括 Session、Auth、ORM 与 Handlers 等,使其原生支持异步。而同步 API 将继续存在并得到完全支持,其中一些最终将转变为原生异步代码的同步包装器。

  ASGI 模式将 Django 作为原生异步应用程序运行,WSGI 模式将围绕每个 Django 调用运行单个事件循环,以使异步处理层与同步服务器兼容。

  在这个改造的过程中,每个特性都会经历以下三个实现阶段:

  Sync-only,只支持同步,也就是当前的情况

  Sync-native,原生同步,同时带有异步封装器

  Async-native,原生异步,同时带同步封装器

  这一草案是 Django 贡献者 Andrew Godwin 于去年提出的,他认为在 Django 传统 MVC 模式中支持异步功能,将会弥补程序同步执行中上下文切换时间过长这一 Python 核心缺陷。

  详情查看该 DEP(Django Enhancement Proposals,Django 增强草案):

  https://github.com/django/deps/blob/master/accepted/0009-async.rst