2015-10-21 78 views
0

我在Django中設置了我的數據庫,其中有大量的數據。任務是以csv格式一次下載所有數據。我在這裏面臨的問題是當數據大小(以表格行數)達到2000時,我可以下載它,但是當行數達到5k以上時,它會引發錯誤「網關超時」。如何處理這樣的問題。截至目前沒有表格索引。 此外,當有2K數據可用時,大約需要18秒才能下載。那麼如何優化呢。; Django數據庫;如何以csv格式下載海量數據

+0

我們無法知道如何進行優化,因爲您沒有向我們展示任何代碼。 –

回答

0

首先,確保生成CSV的代碼儘可能優化。

接下來,網關超時來自您的前端代理;所以只需增加那裏的超時時間。

但是,這是一個暫時緩存 - 隨着數據集的增長,這個超時將被耗盡,並且您將繼續收到這些錯誤。

永久的解決方案是觸發一個單獨的進程在後臺生成CSV,然後在完成後下載它。您可以通過使用celeryrq這兩種方法來排隊執行任務(然後在稍後收集結果)。

0

如果您當前正在使用來自django.http的HttpResponse,那麼您可以嘗試使用StreamingHttpResponse。

如果失敗,您可以直接嘗試查詢數據庫。例如,如果您使用MySql數據庫後端,這些答案可能會對您有所幫助: dump-a-mysql-database-to-a-plaintext-csv-backup-from-the-command-line

至於交易的速度,您可以嘗試其他數據庫後端。但是,如果您需要經常做到這一點,以便速度成爲主要問題,那麼在較大的流程中可能會有其他內容,應該優化。