国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Django 流式響應中文csv樣例

only_do / 2467人閱讀

摘要:在里,流式響應是個好東西可以快速節省內存地產生一個大型文件。目前項目里用于流式響應的一個是,用于改善跨系統通訊時用戶產生的慢速的感覺。

在Django里,流式響應StreamingHttpResponse是個好東西,可以快速、節省內存地產生一個大型文件。

目前項目里用于流式響應的一個是Eventsource,用于改善跨系統通訊時用戶產生的慢速的感覺。這個不細說了。

還有一個就是生成一個大的csv文件。

當Django進程處于gunicorn或者uwsgi等web容器中時,如果響應超過一定時間沒有返回,就會被web容器終止掉,雖然我們可以通過加長web容器的超時時間來繞過這個問題,但是畢竟還是治標不治本。要根本上解決這個問題,Python的生成器、Django框架提供的StreamingHttpResponse這個流式響應很有幫助

而在csv中,中文的處理也至關重要,要保證用excel打開csv不亂碼什么的。。為了節約空間,我就把所有代碼貼到一起了。。實際使用按照項目的規劃放置哈

上代碼:

</>復制代碼

  1. pythonfrom __future__ import absolute_import
  2. import csv
  3. import codecs
  4. import cStringIO
  5. class Echo(object):
  6. def write(self, value):
  7. return value
  8. class UnicodeWriter:
  9. """
  10. A CSV writer which will write rows to CSV file "f",
  11. which is encoded in the given encoding.
  12. """
  13. def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds):
  14. # Redirect output to a queue
  15. self.queue = cStringIO.StringIO()
  16. self.writer = csv.writer(self.queue, dialect=dialect, **kwds)
  17. self.stream = f
  18. self.encoder = codecs.getincrementalencoder(encoding)()
  19. def writerow(self, row):
  20. self.writer.writerow([handle_column(s) for s in row])
  21. # Fetch UTF-8 output from the queue ...
  22. data = self.queue.getvalue()
  23. data = data.decode("utf-8")
  24. # ... and reencode it into the target encoding
  25. data = self.encoder.encode(data)
  26. # write to the target stream
  27. value = self.stream.write(data)
  28. # empty queue
  29. self.queue.truncate(0)
  30. return value
  31. def writerows(self, rows):
  32. for row in rows:
  33. self.writerow(row)
  34. from django.views.generic import View
  35. from django.http.response import StreamingHttpResponse
  36. class ExampleView(View):
  37. headers=["一些","表頭"]
  38. def get(self,request):
  39. result = [["第一行","數據1"],
  40. ["第二行","數據2"]]
  41. echoer = Echo()
  42. writer = UnicodeWriter(echoer)
  43. def csv_itertor():
  44. yield codecs.BOM_UTF8
  45. yield writer.writerow(self.headers)
  46. for column in result:
  47. yield writer.writerow(column)
  48. response = StreamingHttpResponse(
  49. (row for row in csv_itertor()),
  50. content_type="text/csv;charset=utf-8")
  51. response["Content-Disposition"
  52. ] = "attachment;filename="example.csv""
  53. return response

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/37515.html

相關文章

  • 9-django——restful設計風格

    摘要:設計風格協議與用戶的通信協議,總是使用協議域名應該盡量將部署在專用域名之下,如果確定很簡單,不會有進一步的擴展,可以考慮放在主域名之下。數據庫中的表示記錄同種數據的集合,所以中的名詞也應該使用復數。 showImg(https://segmentfault.com/img/bVbdXlE?w=1560&h=913); RESTful Api設計風格 協議:API與用戶的通信協議,總是使...

    scq000 評論0 收藏0
  • 關于PHP導出CSV文件的實現過程以及一些經常遇到的問題研究

    摘要:導出功能在管理后臺算是比較常見的了。但是如果用來打開,超過行的數據都會看不見,這是程序的問題。本次導出數據量很大。原因數值顯示精度為位造成精度丟失。 導出功能在管理后臺算是比較常見的了。在實現導出表格類信息的功能時,可以選擇兩種實現方式: 導出為excel 導出為csv文件格式 用csv方式導出,則可以像導出txt一樣,以文本流的方式進行流式處理,不但能導出海量信息,而且流式處理占...

    用戶83 評論0 收藏0
  • 基于 java 注解的 csv 文件讀寫框架

    摘要:基于注解生成加簽驗簽。是否寫入頭,建議第一次寫入指定,避免中文亂碼指定文件編碼默認不進行字段排序無待寫入的文件列表方法默認值說明必填創建實例,并且指定待讀取文件路徑。 csv 基于 java 注解生成加簽驗簽 csv。 開源地址: github csv) 創作原由 以前覺得 csv 文件的多寫非常簡單,就懶得封裝。 最近一個月寫了兩次 csv 文件相關的東西,發現要處理的細節還是有的,...

    Gemini 評論0 收藏0
  • django官方文檔1.11編翻:首頁

    摘要:源網頁說明文檔所有關于你應該且必須知道的。性能和優化概述的兼容性旨在兼容多種不同版本的支持的兼容性地理框架打算成為世界級的地理框架。其目標是盡可能簡單地構建應用程序并利用空間使能數據的功能。 源網頁:https://docs.djangoproject.co... django說明文檔 所有關于django你應該且必須知道的。 第一步 你是否django編程新手,那就從此開始!從零開始...

    Michael_Lin 評論0 收藏0
  • Django REST FrameWork中文教程2:請求和響應

    摘要:請注意,我們不再明確地將我們的請求或響應明確綁定到給定的內容類型。這允許返回完全可瀏覽網頁的表示。中文文檔目錄中文教程序列化中文教程請求和響應中文教程基于類的視圖中文教程驗證和權限中文教程關系和超鏈接中文教程中文教程模式和客戶端庫 從這一點開始,我們將真正開始覆蓋REST框架的核心。我們來介紹幾個基本的構建塊。 請求對象REST框架引入了Request擴展常規的對象HttpReques...

    winterdawn 評論0 收藏0

發表評論

0條評論

only_do

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<