日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django3 --- async

發(fā)布時(shí)間:2024/7/23 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django3 --- async 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

官方文檔: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:application

1.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.UvicornWorker

1.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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。