urllib.urlopen()是否延迟下载数据



查看用于从url的html中选择图像的reddit python代码:https://github.com/reddit/reddit/blob/master/r2/r2/lib/media.py#L178

在_fetch_image_size中,他们使用urlib2,就好像图像字节是在调用response.read(1024)后才下载的一样。我四处搜索了一下,确认urlib2被优化为只有在调用read()时才延迟下载字节,但我找不到太多关于返回类型(httplib.HTTPResponse)的文档。只是它是一个类似文件的对象(所以你可以对它调用read))。

我测试了urlib2.urlopen(),它对我来说有一点延迟,但也许这只是打开套接字的延迟。对于较大的图像,对结果调用read()的速度非常快。

当调用urlib2.urlopen()时,它会创建一个套接字,并将数据从服务器发送到客户端。此时,套接字处于CLOSE-WAIT(图6)。这意味着它正在等待客户端对套接字调用close(),当您使用read()时就会发生这种情况。

为了回答你的问题,所有的数据都会发送给你,无论你读了多少,而且是在读之前发生的。

干杯!

最新更新