支持異步?django3新特性ASGI初體驗


Django3.0在19年底就已經發行了,由於疫情的原因,一直呆在鄉下。所以都沒有認真的去體驗過django3新功能。

django3.0的三個重要特性是ASGI、支持MariaDB10.1+和自定義枚舉類型(TextChoices,IntegerChoices)。相關信息大家可以查閱官方資料。https://www.djangoproject.com/weblog/2019/dec/02/django-3-released/

 

其它新特性我們暫且不管,我們主要的是要了解一下ASGI,大家都知道,在django3.0之前django的Web服務器網關接口一直用的是WSGI,ASGI的A就是Async,也就是異步的意思,ASGI簡單的來說就是異步的WSGI。由於Django基於WSGI表現起來比較低效,Django團隊首創了ASGI的概念,ASGI模式將Django作為原生異步應用程序運行,原有的WSGI模式將圍繞每個Django調用運行單個事件循環,以使異步處理層與同步服務器兼容。

簡單來說,Django3.0之后就開始支持異步了。廢話不多說,下面我們開始來簡單體驗一下ASGI。

首先,我們用pycharm創建一個新的Django3.0項目:

1.png

項目名為:django_cn

在pycharm的終端里我們pip list一下,查看我們的django版本:

pip list

 

2.png

Django的版本是3.0.5.

然后我們使用之前的wsgi來啟動一下我們的項目:

python manage.py runserver

 

4.png

之后我們訪問:http://127.0.0.1:8000/

 

5.png

這就是Django3.0的歡迎頁面,用的wsgi來啟動的。

打開我們的項目目錄,如下:

3.png

大家看一下,我們的目錄里比之前的django2多出了一個asgi.py文件,這個就是之前我們所說的ASGI組件。下面我們將用這個服務器組件來啟動我們的項目。

ASGI服務器組件,我們有兩種應用服務器可以來啟動它,一種是用Uvicorn,Uvicorn是基於uvloop和httptools的ASGI服務器,它理論上是Python中最高性能的框架了。另一種是Daphne,Daphne是Django軟件基金會開發的一個基於ASGI (HTTP/WebSocket)的服務器。

1、用Uvicorn來啟動ASGI組件

首先先安裝Uvicorn。

pip install uvicorn

安裝好之后我們用下面的命令來啟動我們的項目:

uvicorn django_cn.asgi:application

 

注意:django_cn為我們的項目名稱。

6.png

啟動成功之后就可以訪問我們的項目。

 

2、用Daphne來啟動ASGI組件

使用方法和Uvicorn一樣。

#安裝Daphne
pip install daphne

 

 #然后使用下面命令啟動項目 
daphne djang_cn.asgi:application

兩個性能相差不大,建議使用daphne,關於daphne和uvicorn的性能評測,大家可以看看下面的視頻。

Django3.0以后ASGI服務器中daphne與uvicorn性能測試

 

文章來自: 支持異步?django3新特性ASGI初體驗 https://www.django.cn/article/show-28.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM