2011-12-13 3 views
0

Je veux ouvrir un gros fichier à partir du Web et je voudrais commencer à le traiter avant de le télécharger entièrement. Ce que je voudrais, c'est quelque chose comme urllib2 mais celui qui a un autre thread qui télécharge le fichier en arrière-plan. Il aura une même interface qu'un fichier: si je lis pour plus d'octets qui sont téléchargés le thread principal le bloquerait, et si les octets sont déjà là, la lecture reviendra immédiatement. Lorsque tout est téléchargé, le thread de téléchargement supplémentaire va mourir. Quand tout est lu EOF tirera.Opérateur url asynchrone en python

Y at-il un module intégré qui fait cela?

+1

S'il vous plaît construire correctement la question, avec une meilleure ponctuation, phrase, etc. C'est illisible! – tito

Répondre

0

J'ai regardé ceci: http://mail.python.org/pipermail/python-bugs-list/2007-April/038250.html et ceci: https://stackoverflow.com/a/1517728/498782

et est venu avec un lecteur tamponné pour vous:

url_resource = urllib2.urlopen(url) 
CHUNK = 8 * 1024 
while True: 
    chunk_data = url_resource.read(CHUNK) 
    if not chunk_data: 
     break 
    process(chunk_data) 

Mais gardez à l'esprit les appels de blocage ci-dessus contient. Pour le travail async vous pouvez regarder dans ceci:

http://docs.python.org/library/asyncore.html