django3.0 ASGI初体验,支持Async异步

2022-07-2709:11:45后端程序开发Comments1,670 views字数 1084阅读模式

django3.0的三个重要特性是ASGI、支持MariaDB10.1+和自定义枚举类型(TextChoices,IntegerChoices)。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/26071.html

其它新特性我们暂且不管,我们主要的是要了解一下ASGI,大家都知道,在django3.0之前django的Web服务器网关接口一直用的是WSGI,ASGI的A就是Async,也就是异步的意思,ASGI简单的来说就是异步的WSGI。由于Django基于WSGI表现起来比较低效,Django团队首创了ASGI的概念,ASGI模式将Django作为原生异步应用程序运行,原有的WSGI模式将围绕每个Django调用运行单个事件循环,以使异步处理层与同步服务器兼容。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/26071.html

简单来说,Django3.0之后就开始支持异步了。废话不多说,下面我们开始来简单体验一下ASGI。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/26071.html

首先,我们用pycharm创建一个新的Django3.0项目:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/26071.html

django3.0 ASGI初体验,支持Async异步文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/26071.html

项目名为:django_cn文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/26071.html

在pycharm的终端里我们pip list一下,查看我们的django版本:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/26071.html

pip list

django3.0 ASGI初体验,支持Async异步文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/26071.html

Django的版本是3.0.5.文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/26071.html

然后我们使用之前的wsgi来启动一下我们的项目:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/26071.html

python manage.py runserver

django3.0 ASGI初体验,支持Async异步文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/26071.html

之后我们访问:http://127.0.0.1:8000/文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/26071.html

django3.0 ASGI初体验,支持Async异步文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/26071.html

这就是Django3.0的欢迎页面,用的wsgi来启动的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/26071.html

打开我们的项目目录,如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/26071.html

django3.0 ASGI初体验,支持Async异步文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/26071.html

大家看一下,我们的目录里比之前的django2多出了一个asgi.py文件,这个就是之前我们所说的ASGI组件。下面我们将用这个服务器组件来启动我们的项目。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/26071.html

ASGI服务器组件,我们有两种应用服务器可以来启动它,一种是用Uvicorn,Uvicorn是基于uvloop和httptools的ASGI服务器,它理论上是Python中最高性能的框架了。另一种是Daphne,Daphne是Django软件基金会开发的一个基于ASGI (HTTP/WebSocket)的服务器。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/26071.html

1、用Uvicorn来启动ASGI组件文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/26071.html

首先先安装Uvicorn。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/26071.html

pip install uvicorn

安装好之后我们用下面的命令来启动我们的项目:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/26071.html

uvicorn django_cn.asgi:application

注意:django_cn为我们的项目名称。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/26071.html

django3.0 ASGI初体验,支持Async异步文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/26071.html

启动成功之后就可以访问我们的项目。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/26071.html

2、用Daphne来启动ASGI组件文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/26071.html

使用方法和Uvicorn一样。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/26071.html

#安装Daphne
pip install daphne

#然后使用下面命令启动项目
daphne djang_cn.asgi:application

两个性能相差不大,建议使用daphne。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/26071.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/bc/26071.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定