您的位置:首页 > 编程语言 > Go语言

Django 3.0 将提供异步功能原生支持

2019-07-24 00:00 1211 查看

去年,Django贡献者Andrew Godwin制定了将异步功能引入Django的路线图。经过大量的讨论和修改,Django技术委员会昨天批准了他的DEP 0009: Async-capable Django。

Godwin在Google群组中写道:“经过长时间的、复杂的投票,我可以宣布,技术委员会已经投票支持DEP 0009 (Async Django),因此DEP已被移至“可接受”状态。”

Godwin之所以认为这是在Django中提供异步原生支持的正确时机,是因为从2.1版本开始,它支持Python 3.5及更高版本。这些Python版本具有异步def和对协同程序的类似原生支持。此外,Web现在正在慢慢转向使用偏好高并发工作负载和大型可并行化查询的用例。

Django中异步背后的动机

Django Enhancement Proposal(DEP)0009旨在解决Python中的一个核心缺陷:低效的线程。 Python不被认为是一种完美的异步语言。它用于编写并发代码的'asyncio'库存在一些核心设计缺陷。 Python也有替代的异步框架,但它们是不兼容的。

Django Channels为Django带来了一些异步支持,但它们主要关注WebSocket处理。 DEP解释了这一动机,“同时,重要的是我们有一个计划可以为我们的用户提供直接的好处,而不是试图编写一个全新的Django大小的框架,它本身就是异步的。”

此外,大多数开发人员不熟悉开发具有异步支持的Python应用程序。还缺乏适当的文档,教程和工具来帮助他们。 Godwin认为Django可以成为帮助创建指导文档的“良好催化剂”。

 

DEP的目标概述要实现

 

DEP建议将异步Python的支持带入Django,同时保持同步Python支持以及向后兼容的方式。

 

以下是Godwin在其路线图中列出的最终目标:

  • 在Django中创建阻塞部分,例如sessions,auth,ORM和处理程序,本地异步使用同步包装器暴露在顶部,以确保向后兼容性。
  • 保持熟悉的模型/视图/模板/中间件布局完好无损,只需很少的更改。
  • 确保这些更新不会影响速度并在此计划的任何阶段导致显着的性能回归。
  • 允许开发人员根据需要编写完全异步的网站,但不强制将其作为编写网站的默认方式。
  • 欢迎新的人才进入Djang团队,以帮助大规模的功能。
  • 实现这些目标的时间表

 

Godwin在他的“A Django异步路线图”中分享了以下时间表:

Django 版本 Updates
2.1

目前正在进行中的发布。 没有异步工作

2.2 初始工作是添加异步ORM和视图功能,但默认情况下默认为同步,异步支持主要基于线程池。
3.0 重写内部请求处理堆栈完全异步,添加异步中间件,表单,缓存,会话,auth。 对任何仅变为异步的API启动弃用过程。
3.1 继续改进异步支持,潜在的异步模板更改
3.2 完成弃用过程并拥有一个主要是异步的Django。

Godwin发布了他与Google Group中Django技术委员会讨论的摘要。他们提出的一些问题是团队计划如何区分异步版本的函数/方法与同步版本,如果用户选择退出异步模式,这种实现将如何确保没有性能损失等等。

除了这些技术问题之外,董事会还提出了一个非技术问题,“Django项目多年来失去了许多贡献者,基本上处于维护模式,我们可能没有人员为这样的项目配备人员“Godwin看到了潜入这一根本挑战的大好机会 - 即重振Django项目。他补充道,“我同意观察到事情已经大幅放缓,但我个人认为像异步这样的项目正是Django需要重新开始的。现在有大量的肥沃土壤可以改变和更新不仅仅是解决五年之久的错误。“

阅读DEP 0009: Async-capable Django以了解更多详细信息。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Django 3.0 Django异步
相关文章推荐