Django何时删除临时目录中的上传文件?
根据文档的说明:
如果上传的文件太大,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 个回答
9
为了写这些临时文件,Django使用了Python中的一个叫做 tempfile 的模块。你可以在 django/core/files/temp.py
里看到Django的相关代码。
Django的临时文件是一个叫做 tempfile.NamedTemporaryFile
的东西。这里有代码的链接。在这个构造函数中的默认设置(加上Django里的代码)会让文件在关闭时被删除。
所以要注意文件句柄的链接;如果它们没有被删除,很可能是你的代码没有正确关闭文件句柄,导致文件句柄泄漏。