Globale Funktionen wie requests.get
oder requests.post
erstellen die requests.Session
Instanz auf jeden Anruf. Verbindungen, die mit diesen Funktionen hergestellt wurden, können nicht wiederverwendet werden, da Sie nicht auf automatisch erstellte Sitzungen zugreifen und den Verbindungspool für nachfolgende Anforderungen verwenden können. Es ist in Ordnung, diese Funktionen zu verwenden, wenn Sie nur ein paar Anfragen haben. Andernfalls sollten Sie die Sitzungen selbst verwalten.
Hier ist eine schnelle Anzeige der requests
Verhalten, wenn Sie globale get
Funktion und Sitzung verwenden.
Vorbereitung, nicht wirklich relevant für die Frage:
>>> import logging, requests, timeit
>>> logging.basicConfig(level=logging.INFO, format="%(message)s")
See, neue Verbindung jedes Mal, wenn get
rufen etabliert:
>>> _ = requests.get("https://www.wikipedia.org")
Starting new HTTPS connection (1): www.wikipedia.org
>>> _ = requests.get("https://www.wikipedia.org")
Starting new HTTPS connection (1): www.wikipedia.org
Aber wenn Sie verwenden die gleiche Sitzung für nachfolgende Anrufe, neue Verbindung wird nicht für jede Anforderung erstellt:
>>> session = requests.Session()
>>> _ = session.get("https://www.wikipedia.org")
Starting new HTTPS connection (1): www.wikipedia.org
>>> _ = session.get("https://www.wikipedia.org")
>>> _ = session.get("https://www.wikipedia.org")
>>> _ = session.get("https://www.wikipedia.org")
Leistung:
>>> timeit.timeit('_ = requests.get("https://www.wikipedia.org")', 'import requests', number=100)
Starting new HTTPS connection (1): www.wikipedia.org
Starting new HTTPS connection (1): www.wikipedia.org
Starting new HTTPS connection (1): www.wikipedia.org
...
Starting new HTTPS connection (1): www.wikipedia.org
Starting new HTTPS connection (1): www.wikipedia.org
Starting new HTTPS connection (1): www.wikipedia.org
52.74904417991638
>>> timeit.timeit('_ = session.get("https://www.wikipedia.org")', 'import requests; session = requests.Session()', number=100)
Starting new HTTPS connection (1): www.wikipedia.org
15.770191192626953
Funktioniert viel schneller, wenn Sie die Sitzung (und damit den Verbindungspool der Sitzung) wiederverwenden.
http://docs.python-requests.org/en/latest/user/advanced/#keep-alive – dm03514