Django 3.0 ASGI 指南及其性能

Django讲课笔记03:创建Django项目 文章目录零、本讲学习目标一、课程导入(一)Web框架(二)WSGI二、新课讲授(一)使用内置指令创建Django项目1、主要文件(1)manage.py(2)init.py(3)asgi.py(4)settings.py(5)urls.py(6)wsgi.py2、创建项目应用(7)migrations(8)init py(9)admin.py(10)apps.py(11)models.py(12)tests.py(13)views.py3、启动项目4、任务:显示欢迎信息 - Welcome to Djang 阅读详情

2019 年 12 月,Django3.0 发布,它具有一个有趣的新特性——支持 ASGI 服务器。我对这特性非常感兴趣。当我检查 Python Web 异步框架的性能时,我发现它的性能比 Python Web 同步框架的性能要快3 到 5 倍。

因此,我开始利用非常简单的 Docker 设置来测试 Django3.0 的性能。虽然结果并不非常显著,但还是给人留下了深刻印象。在此之前,你需要对 ASGI 有所了解。

在 ASGI 之前,是 WSGI

2003 年,诸如Zope、Quixote之类的各式各样的 Python Web 框架都附带了自己的 Web 服务器,或者拥有自己的本地接口来与流行的网络服务器(如 Apache)进行通信。

成为一名 Python Web 开发人员意味着要全身心投入到一个完整的技术栈中,但是如果需要另一个框架时,则必须重新学习所有内容。可以想象到这会导致碎片化。PEP 333,即 Python Web 服务器网关接口 v1.0,尝试通过定义一个被称为 WSGI(Web Server Gateway Interface)的简单标准接口来解决这个问题。它的卓越之处在于它的简单性。

实际上,整个 WSGI 规范可以被简化(有意地忽略一些繁琐的细节)为,一个服务器端(server side)调用由框架或者应用提供的可调用对象(如,Python 函数或者具有调用方法的类)。如果存在一个既可以作为调用方,也可以作为被调用方的组件,那么就可以称之为整个处理流程的一个“中间件(middleware)”或者中间层。因此,WSGI 组件可以通过链式组合来处理请求。

当连接越来越简单时,欢愉随之而来

WSGI 如此流行,以至它不仅被诸如 Django 和 Pylons 之类的大型 Web 框架所采用,还被诸如 Bottle 之类的微框架所采用。您最喜欢的框架可以嵌入到任何与 WSGI 兼容的应用服务器中,并且可以正常工作。它是如此简单和直观,以至于没有理由不使用它。

扩大规模的“障碍”

如果我们对 WSGI 非常满意的话,为什么还要提出 ASGI 呢?如果仔细检查网络请求的整个处理流程,那么答案就非常明显了。您可以查看 在Django中网络请求如何工作 的动画。请注意,在数据库查询之后且响应发送之前,框架是如何等待的。这就是同步处理的缺点。

坦白说,直到 2009 年 Node.js 出现时,这种缺陷才变得明显或紧迫。Node.js 的创建者 Ryan Dahl 受到 C10K 问题的困扰,即为什么像 Apache 这样的流行 Web 服务器无法处理 10,000 个或更多的并发连接(给定典型的 Web 服务器硬件,内存将会耗尽)。他思考到 “查询数据库时,软件在做什么?”。

看起来她像是一直在等待中

当然,答案是什么也没有发生。它正在等待数据库的响应。Ryan 认为网络服务器根本不应该去等待 I / O 活动。换言之,它应该切换为处理其他请求,并在较慢的活动完成时能得到通知。使用此技术,Node.js 可以在更少的内存和单个线程上为更多数量的用户提供服务!

越来越明显的是,基于异步事件的架构是解决多种并发问题的正确方法。也许这就是为什么 Python 的创建者 Guido 亲自为 Tulip 项目提供语言级别支持的原因,这个项目后来成为了 asyncio 模块。最终,Python 3.7 添加了新的关键字 async 和 await ,用于支持异步事件循环。这不仅对如何编写 Python 代码而且对代码执行也具有重大意义。

Python 的两个世界

虽然使用 Python 编写异步代码非常简单,在函数定义前添加 async 关键字,但是您必须非常小心,不要打破一个重要的规则:不要随意混合使用同步代码和异步代码。

这是因为同步代码可以阻止异步代码中的事件循环。这种情况会使您的应用程序陷入停顿。正如 Andrew Goodwin 所写:这会将您的代码分为两个世界——具有不同库和调用风格的“同步代码”和“异步代码”。

当两个世界碰撞时,结果可能会出乎意料

回到 WSGI,这意味着我们无法编写异步可调用对象并将其嵌入。WSGI 是为同步世界编写的。我们将需要一种新的机制来调用异步代码。但是,如果每个人都编写自己的一套机制,我们将回到最初的不兼容地狱。因此,对于异步代码,我们需要一个类似于 WSGI 的新标准。因此,ASGI 诞生了。

ASGI 还有其他一些目的。但是在此之前,让我们看一下两种类似的 Web 应用程序“Hello World”,它们分别采用 WSGI 和 ASGI 风格。

使用 WSGI :

使用 ASGI :

注意:传递给可调用对象的参数变化。该参数scope类似于先前的参数environ。该参数send对应于start_response。但是参数receive是新的。它允许客户端使用允许双向通信的协议(如 WebSockets)若无其事地将消息发送到服务器。

与 WSGI 一样,ASGI 可调用对象可以一个接一个地链接在一起,以处理 Web 请求(以及其他协议请求),即链式调用。实际上,ASGI 是 WSGI 的超集且可以调用 WSGI 可调用对象。ASGI 还支持长时间轮询,慢速流媒体和其他响应类型,而无需侧向加载,从而可以加快响应速度。

因此,ASGI 引入了构建异步 Web 界面和处理双向协议的新方式。客户端或服务器端都无需等待对方进行通信——这可以随时异步发生。现存且以同步代码编写的基于 WSGI 的 Web 框架将不支持这种事件驱动的工作方式。

Django 演变

同时,想将所有这些异步优势带给 Django 面临一个重大的问题 —— 所有 Django 代码都是以同步风格编写的。如果我们需要编写任何异步代码,那么需要一个采用异步风格编写的整个 Django 框架的副本。换句话说,创建两个 Django 世界。

好吧,不要惊慌——我们可能不必编写一个完整的副本,因为有聪明的方式可以在两个世界之间重用一些代码。正如领导 Django Async 项目的安德鲁·戈德温(Andrew Godwin)正确地指出的那样,“这是 Django 历史上最大规模的修订之一”。一个雄心勃勃的项目采用异步风格重新实现 ORM、请求处理程序(request handler)、模板渲染器(Template renderer)等组件。这将分阶段进行,并在多个版本中完成。如下是安德鲁的预想(这不视为已提交的时间表):

  •  Django 3.0-ASGI 服务器

  •  Django 3.1-异步视图(请参见下面的示例)

  •  Django 3.2 / 4.0-异步 ORM

您可能正在考虑其余的组件,例如模板渲染、表单和缓存等。它们可能仍然保持同步或者其异步实现会纳入到将来的技术路线中。但是以上是 Django 在异步世界中发展的关键里程碑。

这使我们进入了第一阶段。

Django 谈 ASGI

在 3.0 中,Django 可以在“外部异步、内部同步”模式下工作。这样就可以与所有已知的 ASGI 服务器进行通信,例如:

  •  Daphne —— 采用 Twisted 编写的 ASGI 引用服务器(an ASGI reference server, written in Twisted)

  •  Uvicorn —— 基于 uvloop 和 httptools 的快速 ASGI 服务器(fast ASGI server based on uvloop and httptools)

  •  Hypercorn —— 基于 sans-io hyper、h11、h2 和 wsproto 库的 ASGI 服务器(an ASGI server based on the sans-io hyper, h11, h2, and wsproto libraries)

需要重申一下,Django 内部仍采用线程池(threadpool)同步处理请求。但是,底层的 ASGI 服务器将异步处理请求。

这意味着现有的 Django 项目无需更改。可以将此更改视为 HTTP 请求能够进入 Django 应用程序的新接口。

这是 Django “由外向内”转型的重要第一步。您也可以在通常更快的 ASGI 服务器上开始使用 Django。

如何使用 ASGI?

每个 Django 项目(从版本 v1.4 开始)都附带一个 wsgi.py 文件,该文件是 WSGI 处理程序模块。部署到生产环境时,您会将 WSGI 服务器(如 gunicorn)指向该文件。例如,您可能已经在 编写 Docker 文件中看到了这一行:

如果您创建一个新的 Django 项目(例如,通过运行 django-admin startproject 命令创建的),那么您将在 wsgi.py 同级目录下找到一个全新的文件 asgi.py。您将需要将 ASGI 服务器(如 daphene)指向此 ASGI 处理程序文件。例如,上面的行将更改为:

请注意:这需要有 asgi.py 文件。

在 ASGI 下运行现有的 Django 项目

Django 3.0 之前创建的所有项目都没有 asgi.py。那么如何创建一个呢?这相当简单。

这是 Django 项目的 wsgi.py 和 asgi.py 的并排比较(省略了文档字符串和注释):

如果您很难找出区别,请让我为您提供帮助——将“wsgi”替换为“asgi”。是的,非常简单,获取现有的 wsgi.py 文件并执行字符串替换`s/wsgi/asgi/g`。

陷阱

应注意不要在 asgi.py 的 ASGI 处理程序中调用任何同步代码。例如,如果由于某种原因在 ASGI 处理程序中调用某个 Web API,那么它必须是一个可异步调用的。

性能:ASGI vs WSGI

我做了一个非常简单的性能测试,尝试了 使用 ASGI 和 WSGI 配置的 Django 轮询项目。像所有性能测试一样,您应该在大量的测试中可以得出像我这样的结果。我的 Docker 设置包括 Nginx 和 Postgresql。实际的负载测试是使用多功能的 Locust 工具完成的。

该测试用例是在 Django 轮询应用程序中打开一个轮询表单,然后提交随机决议值。当有 n 个用户时,它每秒发出 n 个请求。等待时间在 1 到 2 秒之间。

快是不够的,还需要避免失败率

下面显示的结果表明:与 WSGI 模式相比,在 ASGI 模式下运行时,同时刻的用户数量增加了大约 50%。

随着并发请求数量的增加,WSGI 或 ASGI 处理程序将无法处理超出某个特定点的状态,从而导致错误或失败。WSGI 失败出现后,每秒请求数变化很大。即使出现失败后,ASGI 的性能也要稳定得多。

如表中所示,在我的机器上,对于 WSGI 的同时刻用户数量约为 300,而对于 ASGI 的同时刻用户数量约为 500。服务器可以正确处理而不发生错误,用户数量增加了约 66%。您的结果记录表可能会略有不同。

常见问题

最近我在 BangPypers 上讨论 ASGI 和 Django,读者提出了很多有趣的问题(即使在活动结束后)。所以我想在这里回答读者提出的问题(不分先后):

问:Django Async 与 Channels 是否相同?

创建 Channels 用以支持像 Websockets 和长轮询 HTTP 等这样的异步协议。Django 应用程序仍然可以同步运行。Channels 是官方的 Django 项目,但不是核心 Django 的一部分。

Django Async 项目除了支持使用同步代码来编写 Django 项目,还支持使用异步代码来编写 Django 应用程序。Async 是 Django 核心的一部分。

两个项目均由安德鲁·古德温(Andrew Goodwin)领导开发。

在大多数情况下,这些都是独立的项目。可以使用这两者之一或者同时使用这两者来开发您的项目。例如,如果您需要通过 Web sockets 支持聊天应用程序,则可以使用 Channels 而不使用 Django 的 ASGI 接口。另一方面,如果要在 Django 视图中创建异步函数,那么将必须等到 Django Async 对视图支持。

问:Django 3.0 中有任何新的依赖项吗?

仅安装 Django 3.0 会将以下内容安装到您的环境中:

该 asgiref 库是一个新的依赖。它包含了同步到异步和异步到同步函数封装,因此可以从异步调用同步代码,反之亦然。它还包含一个 StatelessServer 和一个 WSGI-to-ASGI 适配器。

问:升级到 Django 3.0 是否会破坏我的项目?

版本 3.0 可能与之前的版本 Django 2.2 相比有很大的变化。但这有点误导人。Django 项目未完全遵循语义版本(主版本号更改可能会破坏某些 API),并且差异点会在“发布过程”页面中进行说明。

在 Django 3.0 的发布说明中,将会注意到几乎是没有严重的向后不兼容更改。如果您的项目不使用它们中的任何一个,那么您可以进行升级而无需任何修改。

那么为什么版本号从 2.2 跳到 3.0?在发布节奏部分对此进行了解释:

* 从 Django 2.0 开始,版本号将使用一种宽松的语义版本控制形式,这样 LTS 之后的每个版本都会碰到下一个“零号”版本。例如:2.0、2.1、2.2(LTS)、3.0、3.1、3.2(LTS)等。

由于最新发布 Django 2.2 是长期支持(LTS)版本,因此接下来的发布必须将主版本号增加到 3.0。差不多就是这样的情况!

问:我可以继续使用 WSGI 吗?

可以。异步编程可以看作是在 Django 中编写代码的一种完全可选的方式。使用 Django 时采用熟悉的同步方式将继续有效并受到支持。

安德鲁写道:

  • 即使利用处理程序有了完全异步的路径,也必须维护 WSGI 兼容性;为了做到这一点,WSGI 程序将与新的 ASGI 程序并存,并在一次性事件循环中运行系统——使其在外部保持同步,而在内部保持异步。

  • 如果选择以这种方式运行,这将允许异步视图执行多个异步请求并且甚至在 WSGI 内部启动短暂的协程。但是,如果选择在 ASGI 下运行,那么您还将获得相互之间不阻塞并且使用更少线程的请求的优势。

问:什么时候可以在 Django 中编写异步代码?

如之前在 Async Project 路标中所述,预计 Django 3.1 将引入异步视图,该视图将支持编写异步代码,例如:

您可以随意混合使用异步和同步视图,中间件和测试。Django 将确保您始终拥有正确的执行上下文。听起来很棒,对吗?

在撰写本文时,此补丁几乎可以肯定会在 3.1 中发布,等待最终审查。

总结

我们介绍了许多关于 Django 支持异步功能的背景知识。我们试图理解 ASGI 及其与 WSGI 的差异。我们还发现,针对并发请求数量的增加,在 ASGI 模式下性能有所提高。还解决了许多与 Django ASGI 功能支持有关的常见问题。

我相信 Django 中的异步支持可以打破格局。这将是第一个发展为处理异步请求的大型 Python Web 框架之一。令人钦佩的是,这样做非常小心,并没有破坏向后兼容性。

我通常不会公开我的技术预测(坦率地说,其中许多事实已被证明多年)。我的技术预测就是这样——大多数 Django 部署将在五年内使用异步功能。

我很期待看看我的预测是否准确!

英文原文:https://arunrocks.com/a-guide-to-asgi-in-django-30-and-its-performance/ 
译者:小川姓丘

(完)

Python异步编程|ASGI 与 Django(附源码) 异步服务网关接口(Asynchronous Server Gateway Interface,ASGI)秉承WSGI统一网关接口原则,在异步服务、框架和应用之间提供一个标准接口,同时兼容WSGI。 阅读详情

相关推荐

django3.2.5+asgiref-3.3.2+sqlparse0.2.2

学习django搭建环境时,碰到的部分需要手动安装的依赖组件,这里上传一下,有需要的可以下。

Django3 --- ASGI

1. WSGI 和 ASGI 1.1 什么是WSGI 解释 WSGI 之前应该先说一下什么是 CGI(通用网关接口,Common Gateway Interface,CGI),是Web 服务器运行时外部程序的规范 , 是外部扩展应用程序与 Web 服务器交互的一个标准接口。 CGI规范定义了Web服务器如何向扩展应用程序发送消息,在收到扩展应用程序的信息后又如何进行处理等内容。对于许多静态的HTML网页无法实现的功能,通过 CGI可以实现,比如表单的处理、对数据库的访问、搜索引擎、基于Web的数据库访

小玖工作坊-博客 2348

深度学习入门:使用CMSIS-NN在微控制器上部署模型的完整指南与Python Jupyter实践

CMSIS-NN是ARM为Cortex-M系列微控制器设计的神经网络库。它旨在提供一套高效、轻量级的神经网络API,使得开发者可以在资源受限的微控制器上运行深度学习模型。CMSIS-NN优化了各种常见的神经网络层,如卷积层、全连接层等,确保它们在微控制器上的运行效率。# 定义模型])# 编译模型# 训练模型这样,我们就得到了一个简单的手写数字识别模型。注意:为了简洁和清晰,本文中的代码可能不是最优的或最完整的实现。为了获得完整的项目和更多的优化技巧,请下载完整项目。

m0_57781768的博客 5884

08 Django3的ASGI

Django3的ASGI 1、Web应用程序和web服务器 Web应用程序(Web)是一种能完成web业务逻辑,能让用户基于web浏览器访问的应用程序,它可以是一个实现http请求和响应功能的函数或者类,也可以是Django、Flask、sanic等这样的web框架,当然也可以是其他语言的web程序或web框架。 Web服务器(Web Server)是一种运行于网站后台(物理服务器)的软件。Web服务器主要用于提供网页浏览或文件下载服务,它可以向浏览器等Web客户端提供html网页文档,也可以提供其他类型的

从不喝奶茶的博客 1870

保姆级教程:在Rockchip RK3588 SDK中,如何为你的新硬件板子创建第一个DTS文件

本文提供在Rockchip RK3588 SDK中为自定义硬件创建首个DTS文件的详细教程。通过分析DTS在RK3588开发中的角色、快速定位参考设计、实操步骤及调试验证方法,帮助开发者高效完成硬件板级配置,特别适合嵌入式Linux系统开发者参考。

weixin_28678831的博客 286

WorkBench3.2 + VxWorks6.8安装教程

按照FTP连接主机和目标机,将整个VxWorks6.8的安装分为两个部分,一是在主机(win10系统,可以使用虚拟机或者实体机,推荐使用虚拟机)上安装workbench3.2,进行bootrom与VxWroks映像文件的生成,二是在虚拟机上安装VxWorks系统 19.10.10 首先很高兴文章能帮到大家,但由于本人已不做该方向良久,私信和评论的很多问题现在已经无法解答,如果大家有什么问题欢迎...

Alive的博客 3万+

Django ASGI服务

在Django中, ASGI(Asynchronous Server Gateway Interface)的引入使得Django应用能够支持异步编程.从Django 3.0开始, Django就增加了对ASGI的支持, 但直到Django 3.1才正式推荐在生产环境中使用ASGI.ASGI是一个用于Python的异步Web服务器的标准接口, 它允许你运行异步的Django应用.

清风 1499

ESP32脑机接口开发板:EEG信号采集与应用开发指南

脑机接口(BCI)技术通过采集脑电图(EEG)信号实现人机交互,其核心在于高精度生物电信号采集与实时处理。基于ESP32微控制器的开发平台结合专业级ADS1299 ADC芯片,可构建8通道EEG信号采集系统,支持250SPS采样率与可编程增益。这种嵌入式解决方案在科研教育领域具有显著优势,既能满足信号质量要求,又大幅降低开发门槛。典型应用包括实时脑电波可视化、注意力检测等BCI场景,通过Python生态工具链(如BrainFlow、LSL)可快速实现数据处理。开发时需注意电极阻抗控制(<10kΩ)和50/6

weixin_42518874的博客 344

卓越性能代码_Django 3.0 ASGI 指南及其性能

2019 年 12 月,Django3.0发布,它具有一个有趣的新特性——支持 ASGI 服务器。我对这特性非常感兴趣。当我检查 Python Web 异步框架的性能时,我发现它的性能比 Python Web 同步框架的性能要快3 到 5 倍。因此,我开始利用非常简单的 Docker 设置来测试 Django3.0的性能。虽然结果并不非常显著,但还是给人留下了深刻印象。在此之前,你需...

weixin_39664995的博客 471

zedboard(5)spi轮询和中断

一个SPI可以有几个从设备 在程序中使用 s32 XSpiPs_SetSlaveSelect(XSpiPs *InstancePtr, u8 SlaveSel) 选择。其实就是吧对应设备的ss拉低。 备注:只选一个ss,可以不用指定。(感觉,还没测试) 这是xspips.c中定义的函数,发送和接收有 XSpiPs_Transfer 和 XSpiPs_PolledTransfer 两个函数,分别采用中断和轮询模式。    一、轮询模式 米联客参考代码,SpiPs_Init中部分和官方例程流程一样,Spi

Kiss丶小坏 5890

H无穷控制学习笔记——加权灵敏度H无穷控制问题

一、加权灵敏度H无穷问题 系统结构如上图所示。被控对象P的状态空间方程为(Ap,Bp,Cp,DpA_p,B_p,C_p,D_pAp​,Bp​,Cp​,Dp​),加权函数W1的状态空间方程为(A1,B1,C1,D1A_1,B_1,C_1,D_1A1​,B1​,C1​,D1​),加权函数W2的状态空间方程为(A2,B2,C2,D2A_2,B_2,C_2,D_2A2​,B2​,C2​,D2​),加权函数W3的状态空间方程为(A3,B3,C3,D3A_3,B_3,C_3,D_3A3​,B3​,C3​,D3​)。

一饮丶一啄的博客 4350

Django 3.0 ASGI

asgi

蜗牛专栏 1494

【ArcGIS微课1000例】0145:如何按照自定义形状裁剪数据框?

使用绘图 工具条上的新建圆工具 可创建一个椭圆,使其包含要在该数据框中显示的数据范围。. 在基础工具工具条上单击选择元素工具 ,然后选择圆形。. 在内容列表中右键单击要裁剪的数据框,然后单击属性。. 单击裁剪选项下拉菜单,然后选择裁剪至形状。. 单击数据框属性 对话框中的数据框选项卡。还可以更改裁剪形状轮廓的边框选项。打开软件,添加配套实验数据包中。修改椭圆的属性,使其透明。. 单击所选图形的轮廓。. 单击指定形状按钮。

智慧空间实验室 954

django3.0--ASGI

ASGI 简介 Django3 支持ASGI,可以实现异步通信(websocket) 按照daphne作为ASGI服务器 pip install daphne -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com 启动Daphne服务器 daphne <项目名>.asgi:application NB20 django采用Daphne启动 daphne NB2020.asgi:application -b 0.0.

追逐蓦然 1234

把消息说清楚:OData V2 的 sap-message、错误体 errordetails 与 ABAP 端落地实践(Gateway Foundation / RAP)

OData V2消息机制解析:SAP业务系统的结构化通信设计 本文深入剖析了SAP系统中OData V2协议的消息传递机制。该设计通过双通道(成功时使用sap-message响应头,失败时采用error响应体)实现业务数据与提示信息的结构化分离,解决了企业级应用中"只返回业务数据"或"简单报错"的不足。文章详细解读了消息结构中的关键要素:target字段实现精准UI定位、severity级别控制交互流程、transition标记区分状态消息与过渡消息。同时揭示了SAP

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 852

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

django如何配置使用asgi

通过以上配置,Django 项目即可完整支持 ASGI 协议,既能处理传统HTTP请求,也能支持实时WebSocket通信。• 检查Nginx是否配置了WebSocket代理。在 Django 项目根目录(与。环境变量是否正确设置。

LCY133的博客 1141

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Django ASGI部署:异步服务器支持全指南

你是否曾遇到Django应用在处理高并发请求时响应迟缓?传统的WSGI(Web Server Gateway Interface,Web服务器网关接口)部署模式在面对大量长连接请求时往往力不从心。随着Web应用对实时性要求的提升,异步处理已成为现代Web开发的必备能力。Django自3.0版本起引入ASGI(Asynchronous Server Gateway Interface,异步服务器网关...

gitblog_00489的博客 1371

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Django3.0的一些重大变化

Django的一小步,异步框架的一大步

TYUT__pengkai的博客 2501

九、Django3的ASGI

九、Django3的ASGI 9.1、Web应用程序和web服务器 Web应用程序(Web)是一种能完成web业务逻辑,能让用户基于web浏览器访问的应用程序,它可以是一个实现http请求和响应功能的函数或者类,也可以是Django、Flask、sanic等这样的web框架,当然也可以是其他语言的web程序或web框架。 Web服务器(Web Server)是一种运行于网站后台(物理服务器)的软...

qq_52804302的博客 85

django python3 异步_支持异步?django3新特性ASGI初体验

Django3.0在19年底就已经发行了,由于疫情的原因,一直呆在乡下。所以都没有认真的去体验过django3新功能。django3.0的三个重要特性是ASGI、支持MariaDB10.1+和自定义枚举类型(TextChoices,IntegerChoices)。相关信息大家可以查阅官方资料。https://www.djangoproject.com/weblog/2019/dec/02/djan...

weixin_39716521的博客 503

支持异步的Django 3.X来了,你准备好了吗? Django 3.0新特色与变化详解。

Django在本月10日发布了Django 3.0 alpha版本,标志着Django 3.X时代的来临。作为Django的忠粉们,你们准备好了吗? 尽管Django 3...

大江狗 1万+

超详细Django+Nginx+wsgi+asgi搭建服务器

前言 上上个星期利用django + nginx + wsgi搭建了一个django服务器,这个星期我们项目添加了websocket功能。而wsgi本身是不支持websocket长连接的,所以我们组添加了asgi协议,使用django的插件channels来作为我们项目websocket的支持。在配置期间也碰到了许多坑,记录一下,希望对看到这篇博客的人有一些帮助。 前提条件 由于我的搭建前提是已经跑通了django+nginx+wsgi,所以我建议读这篇文章的人能够保持同一步骤,这样坑可能会少一点。如果你还

weixin_44959377的博客 4742

Django3.0 异步通信初体验

此前博主曾经写过一篇博文,介绍了Django3.0的新特性,其中最主要的就是加入对ASGI的支持,实现全双工的异步通信。 2019年12月2日,Django终于正式发布了3.0版本。怀着无比的期待,我们来尝试一下吧! (附ASGI官方文档地址:https://asgi.readthedocs.io/en/latest/extensions.html) 一、创建Django3工程 利用Py...

技术研究中心 633

django python3 异步_Django3.0 异步通信初体验(小结)

2019年12月2日,Django终于正式发布了3.0版本。怀着无比的期待,我们来尝试一下吧!一、创建Django3工程利用Pycharm的方便,直接通过virtualenv创建虚拟环境,并安装Django3.0。打开控制台,看看都安装了哪些库:(venv) D:\work\for_test\django3>pip listPackage Version------asgiref 3.2...

weixin_39968801的博客 657

使用ASGI部署Django的几种方式

使用ASGI部署Django的几种方式,包括使用Daphne部署,使用hypercorn部署,使用uvicorn部署及使用nignx进行代理转发配置

u011089760的博客 2044
上一篇: 图解机器学习:人人都能懂的算法原理
下一篇: 200页!分享珍藏很久的Python学习知识手册~
Wang_AI
博客等级 码龄12年 991粉丝 162原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值