2015-10-07 432 views
6

有時我看到人們使用requests.Session對象調用Web API:使用requests.get()和requests.session()。get()之間的區別?

client = requests.session() 
resp = client.get(url='...') 

但有時他們不這樣做:

resp = requests.get(url='...') 

有人可以解釋我們什麼時候應該使用Session,當我們不需要他們嗎?

+1

您的*第一站*應該是[庫文檔](http://docs.python-requests.org/en/latest/user/advanced/#session-objects)。 –

回答

9

在引擎蓋下,requests.get()爲每個請求創建了一個新的Session對象。

通過預先創建會話對象,您將獲得重用會話;例如,這可讓您保留Cookie,並允許您重新使用設置以用於所有連接,例如標題和查詢參數。最重要的是,會話讓您利用連接池;重用連接到同一主機。

Sessions documentation

Session對象允許您堅持跨請求某些參數。它還會在Session實例所做的所有請求中保持cookie,並使用urllib3的連接池。因此,如果您向同一主機發出多個請求,則會重新使用基礎TCP連接,這可能會導致性能顯着提高(請參閱HTTP persistent connection)。

+0

因此,如果我的HTTP請求是一次性任務,這兩種方法之間沒有區別,對吧? –

+1

@FredPym:正好。只要你多次連接到同一臺主機,重用會話是一個好主意。 –

0

引述documentation

Session對象允許您堅持跨請求某些參數。它還在Session實例的所有請求中保持cookie。

相關問題