python中的异步url opener

时间:2011-12-13 18:33:24

标签: python url

我想从网上打开一个大文件,并希望在完全下载之前开始处理它。 我想要的是像urllib2,但有另一个线程在后台下载文件。 它将具有与文件相同的界面: 如果我读取更多下载的字节,主线程会阻塞它, 如果字节已经存在,则读取将立即返回。 下载所有内容后,额外的下载程序线程将会死亡。 当所有内容都被读取时,EOF将会触发。

是否有一些内置模块可以做到这一点?

1 个答案:

答案 0 :(得分:0)

我调查了这个: http://mail.python.org/pipermail/python-bugs-list/2007-April/038250.html 还有这个: https://stackoverflow.com/a/1517728/498782

并为您提供了一个缓冲读卡器:

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

但请记住,上面包含阻塞调用。对于异步工作,您可以查看:

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