1. 程式人生 > >HTTP長連線---requests的長連線

HTTP長連線---requests的長連線

使用HTTP協議時,為了充分利用資源,經常會用到http的長連線,也就是底層tcp連線的複用。
在requests庫中,HTTP的長連線是通過Session會話實現的。

會話物件讓你能夠跨請求保持某些引數。它也會在同一個 Session 例項發出的所有請求之間保持 cookie, 期間使用 urllib3 的 connection pooling 功能。所以如果你向同一主機發送多個請求,底層的 TCP 連線將會被重用,從而帶來顯著的效能提升。

HTTP persistent connection, also called HTTP keep-alive, or HTTP connection reuse, is the idea of using a single TCP connection to send and receive multiple HTTP requests/responses, as opposed to opening a new connection for every single request/response pair. The newer HTTP/2 protocol uses the same idea and takes it further to allow multiple concurrent requests/responses to be multiplexed over a single connection.

下面舉例說明,如何使用requests的Session:

#!/usr/bin/python
# -*- coding: utf-8 -*-


import requests
import time

url="http://172.20.29.116:5140"

payload=[{'mesg': 'one'},{'mesg':'two'}]

s = requests.Session()
r = s.post(url, data=payload)
print r.headers
print r.status_code
print r.content

while True:
    time.sleep(10
)
$ netstat -anp | grep 5140
.....   ....    ... ...5140     ESTABLISHED

使用Session傳送HTTP請求後,可以看到,連線依然是ESTABLISHED。
而不使用Session的情況,則是傳送HTTP請求後,連線即斷開。下次傳送請求又要重新建立連線。

注意

要使用長連線,需注意,只有所有的響應體資料被讀取完畢連線才會被釋放為連線池;所以確保將 stream 設定為 False 或讀取 Response 物件的 content 屬性。
所謂stream,是指響應體內容工作流,預設情況下,當你進行網路請求後,響應體會立即被下載。可以通過設定stream為False,推遲下載響應體直到訪問Response.content。

預設情況下, stream是False。使用長連線時,預設即可。

另外,長連線是需要server端支援的,如果server端不支援(例如django server本身是不支援的,每次接收request,處理完成後,就斷開連線),則client設定了也是沒有用的。

參考:

相關推薦

HTTP連線---requests連線

使用HTTP協議時,為了充分利用資源,經常會用到http的長連線,也就是底層tcp連線的複用。 在requests庫中,HTTP的長連線是通過Session會話實現的。 會話物件讓你能夠跨請求保持某些引數。它也會在同一個 Session 例項發出的所有

http和Tcp的連線和短連線

轉自:https://www.cnblogs.com/fubaizhaizhuren/p/7523374.html http協議和tcp/ip 協議的關係 (1) http是應用層協議,tcp協議是傳輸層協議,ip協議是網路協議。 (2) IP協議主要解決網路路由和定址問題 (3)

go實現高效tcp伺服器(適合短連線)類似fasthttp,連線的每個連線分配一個協程(標準庫中的http)

package main import ( "fmt" "net" "os" "time" ) const ( MAX_CONN_NUM = 10 ) //服務處理函式,如果處理過程過於複雜,可以啟動一定量的協程來做(協程

Http連線及短連線

一、HTTP協議與TCP/IP協議的關係 HTTP的長連線和短連線本質上是TCP長連線和短連線。HTTP屬於應用層協議,在傳輸層使用TCP協議,在網路層使用IP協議。 IP協議主要解決網路路由和定址問題,TCP協議主要解決如何在IP層之上可靠地傳遞資料包,

tcp連線,短連線http短輪詢,輪詢

短連線和長連線: 長輪詢和短輪詢 所謂輪詢,即是在一個迴圈週期內不斷髮起請求來得到資料的機制。只要有請求的地方,都可以實現輪詢,譬如各種事件驅動模型。它的長短是在於請求的返回週期。 短輪詢 短輪詢指的是在迴圈週期內,不斷髮起請求,每一次請求都立即

TCP(HTTP)連線和短連線區別和怎樣維護連線

一、HTTP協議和TCP協議 HTTP的長連線和短連線本質上是TCP長連線和短連線。HTTP屬於應用層協議,在傳輸層使用TCP協議,在網路層使用IP協議。IP協議主要解決網路路由和定址問題,TCP協議

HTTP連線和短連線

1. HTTP協議與TCP/IP協議的關係   HTTP的長連線和短連線本質上是TCP長連線和短連線。HTTP屬於應用層協議,在傳輸層使用TCP協議,在網路層使用IP協議。IP協議主要解決網路路由和定址問題,TCP協議主要解決如何在IP層之上可靠的傳遞資料包,使在網路上的另一端收到發端發出的所有包,並且順序

HTTP 連線和短連線

1. HTTP協議與TCP/IP協議的關係 HTTP的長連線和短連線本質上是TCP長連線和短連線。HTTP屬於應用層協議,在傳輸層使用TCP協議,在網路層使用IP協議。IP協議主要解決網路路由和定址問題,TCP協議主要解決如何在IP層之上可靠的傳遞資料包,使在網路上

HTTP連線和短連線

  本文總結&分享網路程式設計中涉及的長連線、短連線概念。     關鍵字:Keep-Alive,併發連線數限制,TCP,HTTP 一、什麼是長連線      HTTP1.1規定了預設保持長連線(HTTP persistent connection ,也

http連線輪詢的理解

昨天翻了翻《HTTP權威指南》,看到HTTP連線管理這節,書中講到了HTTP事務,突然發現事務一詞在好多場合都用到了,事務簡單來說就是一連串的事情,要麼都做,要麼都不做,中間出了問題,整個過程都失敗,對於HTTP事務就是域名解析 --> 發起TCP的3次握手 --&g

談談HTTP協議中的短輪詢、輪詢、連線和短連線

---------------------  作者:左瀟龍  來源:CSDN  原文:https://blog.csdn.net/zuoxiaolong8810/article/details/65441709  版權宣告:本文為博主原創文章,轉載請附上博文連結!

HTTP連線、短連線究竟是什麼?

1. HTTP協議與TCP/IP協議的關係 HTTP的長連線和短連線本質上是TCP長連線和短連線。HTTP屬於應用層協議,在傳輸層使用TCP協議,在網路層使用IP協議。 IP協議主要解決網路路由和定址問題,TCP協議主要解決如何在IP層之上可靠地傳遞資料包,使得網路上接收端

Http連線、短連線、持久連線這三個概念的分析總結

什麼是Http長連線 長連線定義: client方與server方先建立連線,連線建立後不斷開,然後再進行報文傳送和接收。這種方式下由於通訊連線一直存在。此種方式常用於P2P點對點的通訊。 長連線的操作步驟是:建立連線——資料傳輸...(保持連線)...資料傳輸——關閉

雜談——HTTP連線、短連線以及長短輪詢

1.什麼是長連線、短連線?   在HTTP/1.0中,預設使用的是短連線。也就是說,瀏覽器和伺服器每進行一次HTTP操作,就建立一次連線,任務結束就中斷連線。如果客戶端瀏覽器訪問的某個HTML或其他型別的 Web頁中包含有其他的Web資源,如JavaScript檔案、影象檔案、CSS檔案等,每遇

HTTP 連線與短連線

1. HTTP協議與TCP/IP協議的關係   HTTP的長連線和短連線本質上是TCP長連線和短連線。HTTP屬於應用層協議,在傳輸層使用TCP協議,在網路層使用IP協議。IP協議主要解決網路路由和定址問題,TCP協議主要解決如何在IP層之上可靠的傳遞資料包,使在網路上

Java網路程式設計(一) TCP/IP,http,socket,連線,短連線

TCP/IP  TCP/IP是個協議組,可分為三個層次:網路層、傳輸層和應用層。  在網路層有IP協議、ICMP協議、ARP協議、RARP協議和BOOTP協議。  在傳輸層中有TCP協議與UDP協議。  在應用層有:TCP包括FTP、HTTP、TELNET、SMTP等協議

TCP(HTTP)連線和短連線的區別以及怎樣維護連線

一、HTTP協議和TCP協議HTTP的長連線和短連線本質上是TCP長連線和短連線。HTTP屬於應用層協議,在傳輸層使用TCP協議,在網路層使用IP協議。IP協議主要解決網路路由和定址問題,TCP協議主要

【Web基礎】HTTP連線和短連線以及推送技術原理

HTTP長連線和短連線 1. HTTP協議與TCP/IP協議的關係 HTTP的長連線和短連線本質上是TCP長連線和短連線。HTTP屬於應用層協議,在傳輸層使用TCP協議,在網路層使用IP協議。IP協議主要解決網路路由和定址問題,TCP協議主要解決

HTTP連線(持久連線)和短連線

    本文總結&分享網路程式設計中涉及的長連線、短連線概念。     關鍵字:Keep-Alive,併發連線數限制,TCP,HTTP 一、什麼是長連線      HTTP1.1規定了預設保持長連線(HTTP persistent connection ,也

HTTP連線和短連線以及推送技術原理

建立連線——資料傳輸——關閉連線...建立連線——資料傳輸——關閉連線長連線的操作步驟是: 建立連線——資料傳輸...(保持連線)...資料傳輸——關閉連線4. 長連線和短連線的優點和缺點           由上可以看出,長連線可以省去較多的TCP建立和關閉的操作,減少浪費,節約時間。對於頻繁請求資源的客