Django3 --- async
官方文檔:https://docs.djangoproject.com/en/3.2/releases/3.0/
Django 3.0 通過提供對(duì)作為ASGI應(yīng)用程序運(yùn)行的支持,開始了我們使 Django 完全具有異步能力的旅程。
Django 3.1于2020年8月4日發(fā)布!從3.1版本開始,Django將逐步原生支持異步,比如異步視圖和中間件。
python兼容性:
? Django 3.1 支持 Python 3.6、3.7、3.8 和 3.9(從 3.1.3 開始)。官方強(qiáng)烈推薦并且只正式支持每個(gè)系列的最新版本
從創(chuàng)建Django項(xiàng)目目錄來看,可以看出多出一個(gè) asgi.py 文件,:
asgi.py,從django.core.asgi 中導(dǎo)入 get_asgi_application ,支持異步
import osfrom django.core.asgi import get_asgi_applicationos.environ.setdefault('DJANGO_SETTINGS_MODULE', 'django3_asyncio.settings')application = get_asgi_application()wsgi.py , 從django.core.wsgi 中導(dǎo)入 get_wsgi_application,多線程
import osfrom django.core.wsgi import get_wsgi_applicationos.environ.setdefault('DJANGO_SETTINGS_MODULE', 'django3_asyncio.settings')application = get_wsgi_application()注意:兩者只是導(dǎo)入不同的方法。然后用不同的方式啟動(dòng)項(xiàng)目
1. 異步視圖
1.1 async def
要開始使用異步視圖,您需要使用以下命令聲明一個(gè)視圖 :async def
import asyncio from django.http import HttpResponseasync def my_view(request):await asyncio.sleep(3)return HttpResponse('Hello Django asyncio!')1.2 ASGI部署
除了 WSGI,Django 還支持在ASGI 上部署,ASGI是用于異步 Web 服務(wù)器和應(yīng)用程序的新興 Python 標(biāo)準(zhǔn) 。
Django 的startproject管理命令會(huì)為您設(shè)置默認(rèn)的 ASGI 配置 。
1.2.1 Daphne
當(dāng)前的 ASGI 參考服務(wù)器,用 Twisted 編寫并作為 Django Channels 項(xiàng)目的一部分進(jìn)行維護(hù)。支持 HTTP/1、HTTP/2 和 WebSockets。
安裝:
pip install daphne啟動(dòng)項(xiàng)目:
# 進(jìn)入項(xiàng)目目錄,確保從與您的manage.py文件相同的目錄中運(yùn)行此命令。 daphne <項(xiàng)目名稱>.asgi:application1.2.2 Uvicorn
基于 uvloop 和 httptools 的快速 ASGI 服務(wù)器。支持 HTTP/1 和 WebSockets。
安裝:
pip install uvicorn gunicorn啟動(dòng)項(xiàng)目:
? 安裝 Uvicorn 后,可以使用一個(gè)uvicorn命令來運(yùn)行 ASGI 應(yīng)用程序。Uvicorn 需要使用包含 ASGI 應(yīng)用程序?qū)ο蟮哪K的位置來調(diào)用,然后是應(yīng)用程序的名稱(用冒號(hào)分隔)。
# 進(jìn)入項(xiàng)目目錄,確保從與您的manage.py文件相同的目錄中運(yùn)行此命令。 gunicorn myproject.asgi:application -k uvicorn.workers.UvicornWorker1.2.3 Hypercorn
基于 sans-io hyper、h11、h2 和 wsproto 庫的 ASGI 服務(wù)器。支持 HTTP/1、HTTP/2 和 WebSockets。
安裝:
pip install hypercorn啟動(dòng)項(xiàng)目:
? 安裝 Hypercorn 后,hypercorn可以使用運(yùn)行 ASGI 應(yīng)用程序的命令。Hypercorn 需要使用包含 ASGI 應(yīng)用程序?qū)ο蟮哪K的位置來調(diào)用,然后是應(yīng)用程序的名稱(用冒號(hào)分隔)。
# 進(jìn)入項(xiàng)目目錄,確保從與您的manage.py文件相同的目錄中運(yùn)行此命令。 hypercorn myproject.asgi:application總結(jié)
以上是生活随笔為你收集整理的Django3 --- async的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用numpy生成各种波
- 下一篇: NSIS脚本语言安装与编译