Mehrere (asynchron) - verbindungen mit urllib2 oder andere http-Bibliothek?
Habe ich code wie diesen.
for p in range(1,1000):
result = False
while result is False:
ret = urllib2.Request('http://server/?'+str(p))
try:
result = process(urllib2.urlopen(ret).read())
except (urllib2.HTTPError, urllib2.URLError):
pass
results.append(result)
Ich würde gerne zwei oder drei bitte in der gleichen Zeit zu beschleunigen. Kann ich mit urllib2 für diese, und wie? Wenn nicht, welche andere Bibliothek soll ich benutzen? Danke.
InformationsquelleAutor der Frage | 2010-11-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie asynchrone IO, dies zu tun.
Anfragen + gevent = grequests
GRequests ermöglicht die Verwendung von Anfragen mit Gevent, um asynchrone HTTP-Anfragen leicht.
InformationsquelleAutor der Antwort Piotr Dobrogost
Werfen Sie einen Blick auf gevent — eine koroutine-Python-basierte Netzwerk-Bibliothek, die verwendet greenlet, um eine high-level-synchrone API von oben auf libevent-event-Schleife.
Beispiel:
InformationsquelleAutor der Antwort thereisnospoon
So, es ist 2016 ? und wir haben Python 3.4+ mit gebaut-in asyncio Modul für asynchrone I/O. Wir können aiohttp als HTTP-client zum download mehrere URLs parallel.
Quelle: kopieren-einfügen von http://pawelmhm.github.io/asyncio/python/aiohttp/2016/04/22/asyncio-aiohttp.html
InformationsquelleAutor der Antwort Messa
Ich weiß, diese Frage ist ein wenig alt, aber ich dachte, es könnte sein nützlich, um zu fördern ein weiteres async-Lösung, basierend auf den Anforderungen der Bibliothek.
Die docs sind hier: http://pythonhosted.org/simple-requests/
InformationsquelleAutor der Antwort Monkey Boson
Entweder Sie herausfinden,threadsoder Sie verwenden Sie Twisted (das ist asynchron).
InformationsquelleAutor der Antwort Jochen Ritzel
vielleicht mit multiprocessing und teilen Sie die Arbeit auf 2-Verfahren oder so .
Hier ist ein Beispiel (ist nicht getestet)
InformationsquelleAutor der Antwort mouad