Dans le protocole HTTP, vous pouvez envoyer de nombreuses demandes dans un socket en utilisant keep-alive, puis recevoir la réponse du serveur à la fois, ce qui accélérera considérablement l'ensemble du processus. Existe-t-il un moyen de le faire dans python request lib? Ou existe-t-il d'autres moyens d'accélérer cela si bien en utilisant request lib?
Oui il y a. Utilisation requests.Session
et il fera le maintien en vie par défaut .
Je suppose que je devrais inclure un exemple rapide:
import logging
import requests
logging.basicConfig(level=logging.DEBUG)
s = requests.Session()
s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
s.get('http://httpbin.org/cookies/set/anothercookie/123456789')
r = s.get("http://httpbin.org/cookies")
print(r.text)
Vous noterez que ces messages de journal se produisent
INFO:requests.packages.urllib3.connectionpool:Starting new HTTP connection (1): httpbin.org
DEBUG:requests.packages.urllib3.connectionpool:"GET /cookies/set/sessioncookie/123456789 HTTP/1.1" 302 223
DEBUG:requests.packages.urllib3.connectionpool:"GET /cookies HTTP/1.1" 200 55
DEBUG:requests.packages.urllib3.connectionpool:"GET /cookies/set/anothercookie/123456789 HTTP/1.1" 302 223
DEBUG:requests.packages.urllib3.connectionpool:"GET /cookies HTTP/1.1" 200 90
DEBUG:requests.packages.urllib3.connectionpool:"GET /cookies HTTP/1.1" 200 90
Si vous attendez un peu et répétez le dernier get
appel
INFO:requests.packages.urllib3.connectionpool:Resetting dropped connection: httpbin.org
DEBUG:requests.packages.urllib3.connectionpool:"GET /cookies HTTP/1.1" 200 90
Notez qu'il réinitialise la connexion interrompue, c'est-à-dire en rétablissant la connexion au serveur pour effectuer la nouvelle demande.