httpresponse物件將會將響應的資料作為乙個整體返回,此時如果資料量非常大的話,長時間瀏覽器沒有得到伺服器的響應,就會超過預設的超時時間,返回超時。而streaminghttpresponse會將響應的資料作為乙個資料流返回給瀏覽器,這樣瀏覽器就可以接收到伺服器傳送過來的資料,不會因為長期沒有得到伺服器的回應而返回超時。這個類是專門用來處理流資料的,使得在處理一些大型檔案的時候,不會因為伺服器處理時間過長而連線超時。這個類並不是繼承httpresponse,而是繼承httpresponsebase,並且跟httpresponse對比有以下幾點區別:
(1)這個類沒有乙個屬性content,相反是streaming_content。
(2)這個類的streaming_content必須是乙個可以迭代的物件。
(3)這個類沒有write方法,如果給這個類的物件寫入資料將會報錯。
注意:streaminghttpresponse會啟動乙個程序類和客戶端保持長連線,所以會很消耗資源,所以如果不是特殊要求,盡量少用這種方法。
# 定義乙個類echo,實現write方法
class
echo
:def
write
(self, value)
:return value
deflarge_csv
(request)
:# 得到乙個streaminghttpresponse物件,並且設定檔案的型別為csv
# 因為streaminghttpresponse物件傳遞的第乙個引數必須是可以迭代的物件
# ()中使用for ... in ...進行遍歷,我們就可以得到乙個生成器一樣的物件,生成器並不會把資料一次性的返回
rows =
("row {},{}\n"
.format
(row,row)
for row in
range(0
,10000000))
# 使用format()函式將後面的(row,row)與字串中的{}進行替換
:# 初始化
-使用python內建的csv模組中的write(
)方法向response物件寫入資料-
->
writer = csv.writer(response)
for row in
range(0
,10000000):
writer.writerow(
['row {}'
.format
(row)
,'row'
.format
(row)])
return response
python學習心得(1) 大型檔案的讀取
我在部落格上發表一些我的python學習心得,希望對大家能有幫助。這一篇我們講述大型檔案python如何去讀取。當我們使用open函式取得乙個檔案物件之後,對這個檔案的所有操作都是通過這個控制代碼來實現的。讀取檔案的操作有三個 read 直接去讀位元組到字串中,可以指定size來讀取 readlin...
CSV檔案的轉義處理
csv檔案是一種適合程式格式化輸出資料的檔案格式。它使用英文逗號作為列分隔符,檔案可以直接用excel開啟。csv的規則簡單,便於程式輸出 excel對csv的相容性使得我們可以非常輕鬆的使用excel提供的所有強大功能。唯一需要注意的地方就是csv是使用英文逗號作為列分隔符的,所以當你輸出的文字中...
python對csv檔案的處理
在專案中prefix為mapeventmonster,surfix為csv。因此以questid 99070333為例,對應的csv檔名為 mapeventmonster 990703330.csvroomid rate enemygroupid action messageno 0 message...