簡體   English   中英

為 requests.Session() 對象設置主機和端口

[英]Setting host and port for requests.Session() objects

我將如何配置Session() object 以便通過它的所有請求都使用相同的主機和端口?

目前我會做以下事情:

urls = [f'https://somehost.com:1234/query?page={i}' for i in range(10)]
s = requests.Session()
for url in urls:
    r = s.get(url)

有沒有辦法顯式設置持久連接的主機和端口? 例如:

s = requests.Session()
s.host = 'https://somehost.com'
s.port = '1234'

從有關會話的requests文檔中:

Session object 允許您跨請求保留某些參數。 它還在從 Session 實例發出的所有請求中保留 cookies,並將使用 urllib3 的連接池。 因此,如果您向同一主機發出多個請求,則底層 TCP 連接將被重用,這可以顯着提高性能(請參閱 HTTP 持久連接)。

所以當你每次給 url 時。 引擎蓋下的請求不會為每個請求創建新的 TCP 套接字連接。 它將重用 TCP 套接字連接到此主機和連接池中的端口。

會話背后的主要思想是在每個請求之間共享參數和 cookies,而不必在每個請求中單獨設置它們。 並且在引擎蓋下它將保持連接。 但您仍然需要在每次通話中提供完整的 URL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM