如何使用python动态读取套接字流

时间:2014-08-28 20:24:57

标签: python multithreading sockets urllib

操作系统:Windows 7 语言:Python v3.4 lib:urllib

我使用REST协议从服务器检索数据。数据以巨大的XML字符串形式返回。

此刻,我等待所有数据进入,然后我通过它并提取我想要的数据。这需要很长时间,并且需要大量RAM。

我丢弃了大部分数据。所以我想做的是,当它进来时从另一个线程读取套接字输入。这样,我就可以提取出我想要的数据。 XML非常简单且可预测,所以我相信在获得所有数据之前我可以自己解析它。

我愿意放弃urllib并编写我自己的例程并直接读取和写入套接字。

或许还有更好的方法,我不知道 - 我对这种事情有点新鲜。我已经使用了线程,我做了一些套接字读写,但我对这些东西感到非常舒服。

是否还有一种简单的方法可以使用urllib,但是当它进来时从套接字中读取数据?如果没有,我可能会看到哪些编程陷阱?

1 个答案:

答案 0 :(得分:0)

HTTPResponse返回的urllib对象默认不会缓存所有内容。这是在HTTPResponse.__init__

中完成的
self.fp = sock.makefile("rb")

read方法直接从此套接字读取。

您所要做的就是调用read返回的HTTPResponse对象的urllib方法,并为其提供需要读取的字节数。