Optimisation des requêtes HTTP en Python
Le besoin d'envoyer rapidement de nombreuses requêtes HTTP en Python se pose souvent, en particulier lorsqu'il s'agit de grands ensembles de données. Cependant, choisir l’approche la plus efficace parmi les différentes options de concurrence et de threading en Python peut s’avérer difficile. Une solution viable consiste à utiliser une méthode simple mais efficace.
Implémentation efficace des requêtes HTTP
Le code suivant illustre une implémentation très efficace en Python (2.6 compatibilité) :
import urlparse from threading import Thread import httplib, sys from Queue import Queue concurrent = 200 def doWork(): while True: url = q.get() status, url = getStatus(url) doSomethingWithResult(status, url) q.task_done() def getStatus(ourl): try: url = urlparse(ourl) conn = httplib.HTTPConnection(url.netloc) conn.request("HEAD", url.path) res = conn.getresponse() return res.status, ourl except: return "error", ourl def doSomethingWithResult(status, url): print status, url q = Queue(concurrent * 2) for i in range(concurrent): t = Thread(target=doWork) t.daemon = True t.start() try: for url in open('urllist.txt'): q.put(url.strip()) q.join() except KeyboardInterrupt: sys.exit(1)
Explication
Cette solution optimisée surpasse les méthodes traditionnelles, en utilisant une approche rationalisée qui équilibre l'utilisation des ressources et la vitesse d'exécution des tâches.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!