W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
HTTP/2 是 HTTP 協(xié)議的主要新迭代,它提供了更高效的傳輸,并具有潛在的性能優(yōu)勢。HTTP/2 不會(huì)更改請求或響應(yīng)的核心語義,但會(huì)更改數(shù)據(jù)與服務(wù)器之間的發(fā)送方式。
與 HTTP/1.1 使用的文本格式不同,HTTP/2 是一種二進(jìn)制格式。二進(jìn)制格式提供完整的請求和響應(yīng)多路復(fù)用,以及 HTTP 標(biāo)頭的高效壓縮。流多路復(fù)用意味著 HTTP/1.1 要求每個(gè)并發(fā)請求有一個(gè) TCP 流,而 HTTP/2 允許單個(gè) TCP 流處理多個(gè)并發(fā)請求。
HTTP/2 還提供了對響應(yīng)優(yōu)先級和服務(wù)器推送等功能的支持。
有關(guān)HTTP / 2的綜合指南,您可能需要查看“HTTP2解釋”。
使用httpx客戶端時(shí),默認(rèn)情況下不啟用 HTTP/2 支持,因?yàn)?HTTP/1.1 是一個(gè)成熟的、久經(jīng)沙場的傳輸層,而我們的 HTTP/1.1 實(shí)現(xiàn)目前可能被認(rèn)為是更健壯的選項(xiàng)。默認(rèn)情況下,將來版本的 httpx可能會(huì)啟用 HTTP/2 支持。
如果您要發(fā)出高度并發(fā)的請求,則可能需要考慮試用我們的 HTTP/2 支持。您可以通過首先確保安裝可選的HTTP / 2依賴項(xiàng)來執(zhí)行此操作...
$ pip install httpx[http2]
然后實(shí)例化啟用了 HTTP/2 支持的客戶端:
client = httpx.AsyncClient(http2=True)
...
您還可以將客戶端實(shí)例化為上下文管理器,以確保所有 HTTP 連接都具有良好的作用域,并且在上下文塊退出后將關(guān)閉。
async with httpx.AsyncClient(http2=True) as client:
...
HTTP/2 支持在Client 和AsyncClient 上都可用,盡管如果您發(fā)出大量并發(fā)請求,它通常在異步上下文中更有用。
在客戶端上啟用 HTTP/2 支持并不一定意味著您的請求和響應(yīng)將通過 HTTP/2 傳輸,因?yàn)榭蛻舳撕头?wù)器都需要支持 HTTP/2。如果連接到僅支持 HTTP/1.1 的服務(wù)器,則客戶端將改用標(biāo)準(zhǔn) HTTP/1.1 連接。
您可以通過檢查響應(yīng)上的?.http_version
?屬性來確定使用了哪個(gè)版本的 HTTP 協(xié)議。
client = httpx.AsyncClient(http2=True)
response = await client.get(...)
print(response.http_version) # "HTTP/1.0", "HTTP/1.1", or "HTTP/2".
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: