2014-08-28 13 views
0

操作系統:Windows 7 語言:Python的V3.4 lib目錄下:urllib的如何動態地讀取套接字流與Python

我檢索使用REST協議的服務器數據。數據作爲一個巨大的XML字符串返回。

目前,我等待所有的數據進入,然後我通過它並提取我想要的數據。這需要很長時間,並且需要大量RAM。

我放棄了大部分數據。所以我想要做的是從另一個線程讀取套接字輸入。這樣,我就可以提取我想要的數據。 XML非常簡單並且可以預測,所以我相信在我獲得所有數據之前我可以自己解析它。

我願意放棄urllib並編寫自己的例程,並直接讀寫套接字。

或者也許有更好的方法,我不知道 - 我對這種事情有點新鮮。我使用過線程,並且我做了一些套接字讀寫操作,但我還不完全理解這些東西。

有沒有簡單的方法仍然使用urllib,但從套接字讀取數據,因爲它是在?如果不是,我可能會看到哪些編程陷阱?

+0

您能否顯示您的代碼的_few_相關行? – 2014-08-28 20:28:15

回答

0

urllib返回的HTTPResponse對象默認情況下不會緩存所有內容。這是什麼在HTTPResponse.__init__

self.fp = sock.makefile("rb") 

讀取方法直接從這個套接字讀取。

您只需要調用HTTPResponse對象的read方法返回urllib,併爲其指定需要讀取的字節數。

+0

謝謝。這正是我正在尋找的。 (我想我會跳過線程的想法)。 – oksofar 2014-10-07 00:11:29