有時我看到人們使用requests.Session對象調用Web API:使用requests.get()和requests.session()。get()之間的區別?
client = requests.session()
resp = client.get(url='...')
但有時他們不這樣做:
resp = requests.get(url='...')
有人可以解釋我們什麼時候應該使用Session
,當我們不需要他們嗎?
有時我看到人們使用requests.Session對象調用Web API:使用requests.get()和requests.session()。get()之間的區別?
client = requests.session()
resp = client.get(url='...')
但有時他們不這樣做:
resp = requests.get(url='...')
有人可以解釋我們什麼時候應該使用Session
,當我們不需要他們嗎?
在引擎蓋下,requests.get()
爲每個請求創建了一個新的Session
對象。
通過預先創建會話對象,您將獲得重用會話;例如,這可讓您保留Cookie,並允許您重新使用設置以用於所有連接,例如標題和查詢參數。最重要的是,會話讓您利用連接池;重用連接到同一主機。
Session對象允許您堅持跨請求某些參數。它還會在Session實例所做的所有請求中保持cookie,並使用urllib3的連接池。因此,如果您向同一主機發出多個請求,則會重新使用基礎TCP連接,這可能會導致性能顯着提高(請參閱HTTP persistent connection)。
因此,如果我的HTTP請求是一次性任務,這兩種方法之間沒有區別,對吧? –
@FredPym:正好。只要你多次連接到同一臺主機,重用會話是一個好主意。 –
Session對象允許您堅持跨請求某些參數。它還在Session實例的所有請求中保持cookie。
您的*第一站*應該是[庫文檔](http://docs.python-requests.org/en/latest/user/advanced/#session-objects)。 –