; Django数据库;如何以csv格式下载海量数据

问题描述:

我在Django中设置了我的数据库,其中有大量的数据。任务是以csv格式一次下载所有数据。我在这里面临的问题是当数据大小(以表格行数)达到2000时,我可以下载它,但是当行数达到5k以上时,它会引发错误“网关超时”。如何处理这样的问题。截至目前没有表格索引。 此外,当有2K数据可用时,大约需要18秒才能下载。那么如何优化呢。; Django数据库;如何以csv格式下载海量数据

+0

我们无法知道如何进行优化,因为您没有向我们展示任何代码。 –

首先,确保生成CSV的代码尽可能优化。

接下来,网关超时来自您的前端代理;所以只需增加那里的超时时间。

但是,这是一个暂时缓存 - 随着数据集的增长,这个超时将被耗尽,并且您将继续收到这些错误。

永久的解决方案是触发一个单独的进程在后台生成CSV,然后在完成后下载它。您可以通过使用celeryrq这两种方法来排队执行任务(然后在稍后收集结果)。

如果您当前正在使用来自django.http的HttpResponse,那么您可以尝试使用StreamingHttpResponse。

如果失败,您可以直接尝试查询数据库。例如,如果您使用MySql数据库后端,这些答案可能会对您有所帮助: dump-a-mysql-database-to-a-plaintext-csv-backup-from-the-command-line

至于交易的速度,您可以尝试其他数据库后端。但是,如果您需要经常做到这一点,以便速度成为主要问题,那么在较大的流程中可能会有其他内容,应该优化。