准备一个大文件在Django下载

时间:2018-04-11 08:16:02

标签: django django-rest-framework background-process django-channels

我使用Django Rest Framework来序列化我的数据库中的数据,将其转换为json并让用户将其作为文本文件下载。

问题是准备文件需要相当多的时间,因此有时会发生服务器超时。

我切换到Django频道以避免超时,但现在我以一种相当丑陋的方式执行:我向Channels发送信号,序列化器准备数据,将其转储到目录,然后发回一个url下载此临时文件。一切正常,但我有一堆临时文件,我现在需要定期清理(使用cronjob)。

还有更多'正确的'在后台准备大文件的方法,并将其传递到视图下载,而无需将其存储在磁盘上?

1 个答案:

答案 0 :(得分:0)

如果大小不大,您可以使用StringIO创建内存中文件:

from io import StringIO
f = StringIO("some text data")