gpt4 book ai didi

python - Django channel VS Django 3.0/3.1?

转载 作者:行者123 更新时间:2023-12-03 14:35:12 32 4
gpt4 key购买 nike

有人可以澄清 Django Channels Project 之间的差异或互补性吗?和新的 Django native async support ?

据我了解,Django-Channels 是一个在 Django 之外启动的项目,然后,开始集成到核心 Django 中。但这项工作的现状让我感到困惑。

例如,今天我使用的是 Django 2.2,我想将 WebSocket 支持添加到我的项目中。我是不是该:

  • 升级到最新的 Django 版本?
  • 使用 Django Channels 包?
  • 两个 Action 都做?
  • 最佳答案

    today I'm using Django 2.2, and I'd like to add WebSocket support to my project.



    如果您想为您的应用程序添加 websocket 支持,目前您不需要升级到 django 3.0。 Django 2.2 plus channels 可以做到这一点——目前是最好的方法。 (尽管如果您没有任何不这样做的充分理由,升级到 django 3.0 绝对没有害处)。我将尝试在此答案中进一步解释原因。

    From what I understood, Django-Channels is a project that have been started outside of Django, and then, started to be integrated in the core Django. But the current state of this work remains confusing to me.



    是的,我的理解是 channel 最初是来自 Django 核心开发人员之一的项目(Andrew Godwin - 他也有助于实现 Django 3.0 中带来的异步更改)。它 不是 如果您只是安装 Django,则会自动包含,但 它正式成为 django 项目的一部分 ,并且自 2016 年 9 月以来一直存在(参见 here)。它现在是 2.4 版,因此是一个已建立且稳定的项目,可用于将 websockets 添加到您的 django 应用程序。

    那么 Django 3.x 和 async 发生了什么?

    虽然 channel 添加了一种向 django 应用程序添加一些异步功能的方法,但 Django 的核心仍然是同步的。正在逐步引入的“异步”项目解决了这个问题。这里要注意的关键是它是逐步引入的。 Django 由几个层组成:
  • WSGI 服务器(实际上不是 django 的一部分):处理实际接受 HTTP 请求的协议(protocol)
  • Base Handler:这会获取从服务器传递给它的请求,并确保它是通过中间件和 url 配置发送的,因此我们最终会得到一个 django 请求对象和一个将其传递给的 View 。
  • View 层(你告诉它做什么)
  • 我们可以从 View 中调用 ORM,以及您使用 Django 获得的所有其他可爱的东西。

  • 现在要充分受益于异步,我们真的需要所有这些层都是异步的,否则不会有任何性能优势。这是一个相当大的项目,因此为什么要逐步推出它:
  • 随着 django 3.0 的发布,真正添加的只是与 ASGI 服务器(而不仅仅是 WSGI 服务器)对话的能力。
  • 当 Django 3.1 发布时(预计 2020 年 8 月),预计会有异步中间件和 View 的功能。
  • 最后在 django 3.2 甚至 4.0 中,我们将在整个 Django 上下获得异步功能。

  • 一旦我们到达最后一点,可能值得考虑将 Django 的异步特性用于 web-sockets 之类的东西,但目前我们甚至无法利用我们现在可以处理 ASGI 和 WSGI 的事实服务器。您可以将 Django 与 ASGI 服务器一起使用,但没有意义,因为基本处理程序仍然是同步的。

    TLDR
  • Django channel 添加了一种处理 HTTP 以外的协议(protocol)的方法,并添加了对诸如 django 的 session 框架和身份验证框架之类的东西的集成,因此很容易将 websockets 之类的东西添加到您的 django 项目中。它已完成,您今天就可以开始使用它了!!
  • native 异步支持是对 Django 核心的根本性重写。这是一个正在进行的工作。这非常令人兴奋,但暂时还没有准备好真正从中受益。

  • 去年 djangoCon 上有一个很好的演讲,概述了异步 django 的计划。您可以查看 here .

    关于python - Django channel VS Django 3.0/3.1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61850321/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com