日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
創(chuàng)新互聯(lián)Django4.0教程:Django4.0中間件-異步支持

中間件支持同步和異步請(qǐng)求的任意組合。如果Django不能同時(shí)支持它們,它會(huì)調(diào)整請(qǐng)求來適應(yīng)中間件的需求,但會(huì)有性能損失。

成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)介紹好的網(wǎng)站是理念、設(shè)計(jì)和技術(shù)的結(jié)合。創(chuàng)新互聯(lián)擁有的網(wǎng)站設(shè)計(jì)理念、多方位的設(shè)計(jì)風(fēng)格、經(jīng)驗(yàn)豐富的設(shè)計(jì)團(tuán)隊(duì)。提供PC端+手機(jī)端網(wǎng)站建設(shè),用營(yíng)銷思維進(jìn)行網(wǎng)站設(shè)計(jì)、采用先進(jìn)技術(shù)開源代碼、注重用戶體驗(yàn)與SEO基礎(chǔ),將技術(shù)與創(chuàng)意整合到網(wǎng)站之中,以契合客戶的方式做到創(chuàng)意性的視覺化效果。

默認(rèn)情況下,Django假設(shè)你的中間件只能處理同步請(qǐng)求。如果要改變這種模式,需要在你的中間件工廠函數(shù)或類中添加入如下屬性:

  • ?sync_capable ?是一個(gè)布爾值,來表明中間件是否處理同步請(qǐng)求。默認(rèn)為 ?True?。
  • ?async_capable ?是一個(gè)布爾值,來表明中間件是否處理異步請(qǐng)求。默認(rèn)為 ?False?。

如果中間件的?sync_capable = True?并且 ?async_capable = True?,那么Django 會(huì)將請(qǐng)求傳遞給它而不進(jìn)行轉(zhuǎn)換。在這種情況下,你可以使用 ?asyncio.iscoroutinefunction()? 來檢查傳遞的 ?get_response? 是否是一個(gè)協(xié)同函數(shù),從而確定中間件是否接收到異步請(qǐng)求。
?django.utils.decorators? 模塊包含 ?sync_only_middleware()?,?async_only_middleware()? 和 ?sync_and_async_middleware()? 裝飾器,允許你將這些標(biāo)志應(yīng)用到中間件工廠函數(shù)中。
返回的可調(diào)用對(duì)象必須符合 ?get_response ?方法的同步或異步性質(zhì)。如果你有一個(gè)異步的 ?get_response?,你必須返回一個(gè)協(xié)程函數(shù)(?async def?)。
?process_view?、?process_template_response ?和 ?process_exception ?方法,如果有的話,也應(yīng)該進(jìn)行調(diào)整以匹配同步/異步模式。然而,如果你不這樣做,Django 會(huì)根據(jù)需要單獨(dú)調(diào)整它們,但會(huì)有額外的性能損失。
下面以一個(gè)例子來說明如何創(chuàng)建一個(gè)支持這兩種功能的中間件函數(shù):

import asyncio
from django.utils.decorators import sync_and_async_middleware

@sync_and_async_middleware
def simple_middleware(get_response):
    # One-time configuration and initialization goes here.
    if asyncio.iscoroutinefunction(get_response):
        async def middleware(request):
            # Do something here!
            response = await get_response(request)
            return response

    else:
        def middleware(request):
            # Do something here!
            response = get_response(request)
            return response

    return middleware

注解:如果你聲明了一個(gè)同時(shí)支持同步和異步調(diào)用的混合中間件,你得到的調(diào)用種類可能與底層視圖不匹配。Django 會(huì)優(yōu)化中間件調(diào)用棧,使其盡可能少的同步/異步轉(zhuǎn)換。

因此,即使你包裝的是一個(gè)異步視圖,如果在你和視圖之間有其他的、同步的中間件,你也可能會(huì)在同步模式下被調(diào)用。


文章題目:創(chuàng)新互聯(lián)Django4.0教程:Django4.0中間件-異步支持
文章出自:http://www.5511xx.com/article/dhchdsd.html