Je sais que vous posez des questions sur le pycurl, mais je le trouve trop dur et non-pythonique à utiliser. L'API est bizarre.
Voici un exemple twisted:
from twisted.web.client import Agent
from twisted.internet import reactor, defer
def get_headers(response, url):
'''Extract a dict of headers from the response'''
return url, dict(response.headers.getAllRawHeaders())
def got_everything(all_headers):
'''print results and end program'''
print dict(all_headers)
reactor.stop()
agent = Agent(reactor)
urls = (line.strip() for line in open('urls.txt'))
reqs = [agent.request('HEAD', url).addCallback(get_headers, url) for url in urls if url]
defer.gatherResults(reqs).addCallback(got_everything)
reactor.run()
Cet exemple commence toutes les demandes de manière asynchrone, et rassembler tous les résultats. Voici la sortie d'un fichier avec 3 urls:
{'http://debian.org': {'Content-Type': ['text/html; charset=iso-8859-1'],
'Date': ['Thu, 04 Mar 2010 13:27:25 GMT'],
'Location': ['http://www.debian.org/'],
'Server': ['Apache'],
'Vary': ['Accept-Encoding']},
'http://google.com': {'Cache-Control': ['public, max-age=2592000'],
'Content-Type': ['text/html; charset=UTF-8'],
'Date': ['Thu, 04 Mar 2010 13:27:25 GMT'],
'Expires': ['Sat, 03 Apr 2010 13:27:25 GMT'],
'Location': ['http://www.google.com/'],
'Server': ['gws'],
'X-Xss-Protection': ['0']},
'http://stackoverflow.com': {'Cache-Control': ['private'],
'Content-Type': ['text/html; charset=utf-8'],
'Date': ['Thu, 04 Mar 2010 13:27:24 GMT'],
'Expires': ['Thu, 04 Mar 2010 13:27:25 GMT'],
'Server': ['Microsoft-IIS/7.5']}}
Eh bien, la même raison que vous souhaitez utiliser Python et non C/ASM - pour rendre les choses plus facile/plus agréable. – nosklo
Lorsque vous prenez en compte le type de recherche et d'apprentissage de l'utilisation d'un module tiers, il n'y a pas beaucoup d'économie pour un si petit problème. – mikerobi
Ce n'est pas un argument. Vous devez également apprendre des modules intégrés pour que le temps passé soit le même. Et pour certains cas (comme celui-ci), vous obtiendrez un code de qualité inférieure. – nosklo