2015-10-07 15 views
6

Manchmal sehe ich Menschen eine Web-API requests.Session Objekt aufrufen:Unterschied zwischen der Verwendung von requests.get() und requests.session(). Get()?

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

Aber manchmal nicht sie tun:

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

Kann jemand erklären, wann sollten wir Session verwenden und wenn wir es nicht tun brauche sie?

+1

Ihr * erster Stopp * sollte die [Bibliotheksdokumentation] sein (http://docs.python-requests.org/en/latest/user/advanced/#session-objects). –

Antwort

9

Unter der Haube, requests.get() erstellt ein neues Session Objekt für jede Anfrage gemacht.

Durch Erstellen eines Sitzungsobjekts im Vordergrund erhalten Sie wiederverwenden die Sitzung; So können Sie beispielsweise Cookies beibehalten und die Einstellungen für alle Verbindungen wie Header und Abfrageparameter erneut verwenden. Darüber hinaus können Sie mit Sessions das Connection Pooling nutzen. Verbindungen zum selben Host wiederverwenden.

Siehe Sessions documentation:

Das Session-Objekt können Sie bestimmte Parameter über Anfragen bestehen. Außerdem werden Cookies für alle Anforderungen beibehalten, die von der Sitzungsinstanz gestellt wurden, und das Verbindungspooling von urllib3 wird verwendet. Wenn Sie also mehrere Anforderungen an denselben Host stellen, wird die zugrunde liegende TCP-Verbindung erneut verwendet, was zu einer erheblichen Leistungssteigerung führen kann (siehe HTTP persistent connection).

+0

Also, wenn meine HTTP-Anfrage eine einmalige Aufgabe ist, wird es keinen Unterschied zwischen diesen beiden Ansätzen geben, oder? –

+1

@FredPym: genau. Sobald Sie mehrere Verbindungen zu demselben Host herstellen, empfiehlt es sich, die Sitzung erneut zu verwenden. –

0

die documentation

Die Session zitieren Objekt können Sie bestimmte Parameter über Anfragen bestehen. Außerdem werden Cookies für alle Anforderungen beibehalten, die von der Sitzungsinstanz gestellt wurden.

Verwandte Themen