Django文件系统存储大量文件

时间:2012-07-02 10:36:54

标签: python django filesystems storage

方案: Django应用程序会生成许多与不同模型中的对象相关的小文件。

在使用默认的Filestorage时,我已经做了很多搜索,以避免在单个目录中生成大量文件。

django-fsfield 是唯一的开源解决方案吗?还有什么建议你在dir中修复大量的inode吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

考虑将内容存储在MongoDB集合中。

由于文件很小,您可以使用包含文件内容的单个binary field创建MongoDB文档。在这种情况下,“小”意味着小于MongoDB文档大小限制,目前为16MB。

如果您需要存储大文件,Mongo会使用gridfs支持。

另见When to use GridFS

答案 1 :(得分:2)

我正在使用django-castor

  

django-castor是Django的一个可重用的应用程序,提供了一个   内容可寻址存储后端。主要班级,   djcastor.storage.CAStorage是一种保存文件的FileSystemStorage类型   在他们的SHA-1摘要下。

     
      
  • 无论上传同一个文件多少次,它都只会是   存储一次,从而消除冗余。

  •   
  • 文件名是伪随机的,只由十六进制字符组成,所以   您不必担心文件名冲突或清理。

  •   
  • django-castor基于他们的上传目录中的文件   摘要;当单个文件太多时,这可以防止文件系统问题   。目录

  •   

答案 2 :(得分:0)

也可以使用自定义存储管理器,如果文件很小,请将其保存在具有二进制字段的数据库模型中,并保存大小为16MB的小文件,并且不需要使用其他数据库。