操作系统:Windows 7 语言:Python v3.4 lib:urllib
我使用REST协议从服务器检索数据。数据以巨大的XML字符串形式返回。
此刻,我等待所有数据进入,然后我通过它并提取我想要的数据。这需要很长时间,并且需要大量RAM。
我丢弃了大部分数据。所以我想做的是,当它进来时从另一个线程读取套接字输入。这样,我就可以提取出我想要的数据。 XML非常简单且可预测,所以我相信在获得所有数据之前我可以自己解析它。
我愿意放弃urllib并编写我自己的例程并直接读取和写入套接字。
或许还有更好的方法,我不知道 - 我对这种事情有点新鲜。我已经使用了线程,我做了一些套接字读写,但我对这些东西感到非常舒服。
是否还有一种简单的方法可以使用urllib,但是当它进来时从套接字中读取数据?如果没有,我可能会看到哪些编程陷阱?
答案 0 :(得分:0)
HTTPResponse
返回的urllib
对象默认不会缓存所有内容。这是在HTTPResponse.__init__
:
self.fp = sock.makefile("rb")
read方法直接从此套接字读取。
您所要做的就是调用read
返回的HTTPResponse
对象的urllib
方法,并为其提供需要读取的字节数。