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