当Django从临时目录中删除上传的文件时?

时间:2014-05-14 14:37:01

标签: python django file-upload

根据docs

  

但是,如果上传的文件太大,Django会写   将文件上传到存储在系统临时文件中的临时文件   目录。在类似Unix的平台上,这意味着你可以期待Django   生成一个名为/tmp/tmpzfp6I6.upload的文件。如果   上传足够大,你可以看到这个文件的大小增长为Django   将数据流式传输到磁盘上。

所以我已经将相同的大文件多次上传到视图中并得到了这个:

vic@vic /tmp $ ls -l tmp*.upload
-rw------- 1 vic vic2 3436110 мая   14 18:31 tmpKdZrQl.upload
-rw------- 1 vic vic2 3436110 мая   14 18:31 tmpqLyBsy.upload

何时从临时目录中删除这些文件?

我想避免膨胀临时目录。

1 个答案:

答案 0 :(得分:8)

要编写这些临时文件,Django在python中使用tempfile模块。你可以在django/core/files/temp.py中看到django的代码。

django临时文件是tempfile.NamedTemporaryFileHere's a link to the code。该构造函数中的默认设置(加上django中的代码)要求在文件关闭时删除该文件。

请注意文件句柄链接;如果它们没有被删除,很可能是您的代码泄漏了文件句柄,并且从未关闭它。