多个Django存储后端系统

6 投票
1 回答
1750 浏览
提问于 2025-04-18 01:59

我有一个使用Django的应用程序,它通过S3BotoStorage这个后端把上传的文件存储在亚马逊的S3上。但是在使用django-tastypie的网页API服务时,上传文件到S3的速度很慢。

这是因为请求需要先经过网页服务器,然后再传到亚马逊的S3存储。

所以我们想出了一个解决办法,让用户先把文件上传到网页服务器,然后通过django-celery任务把文件上传到亚马逊S3。这个方案已经完成并且可以正常工作。

但是之后我们想修改文件的URL,让它指向亚马逊S3的存储位置。

当我们尝试把file_field_obj.storage改成s3botostroage时,它又自动恢复成默认的文件存储,这种情况是可以预料的。

所以有没有办法在文件上传到S3后,修改Django模型中的FileField存储字段?这样在设置中,默认的FileStorage会指向FileSystemStorage,但如果文件已经在S3上,它们就会指向S3的存储位置。

1 个回答

1

这个问题的解决办法已经在一个应用里找到了:django-queued-storage

这个应用可以处理创建celery任务,用来在不同的存储后端之间上传文件。

撰写回答