我正在使用 django-storages 将媒体文件存储在 S3 存储桶中。但是,我偶尔会转换或以其他方式摆弄文件以创建新文件,并且这种摆弄必须实际使用我的服务器上的文件(大部分转换使用进程调用发生)。完成后,我想将文件保存回 S3。
在理想情况下,从本地迁移到 S3 时,我不必对函数进行任何更改。但是,考虑到我必须创建这些中间本地文件来摆弄,我不确定我将如何做到这一点,然后最后知道结果文件(也将存储在本地机器上)需要然后是复制到 S3。
我能想到的最好的方法是使用一对上下文保护,一个用于源文件,一个用于目标文件。源文件将创建一个临时文件,该文件将复制源文件的内容,然后将其使用、操作等。目标文件上下文保护将在 S3 上获取最终所需的目标路径并创建一个临时本地文件,然后在退出时会在 S3 存储桶中创建一个密钥,复制临时文件的内容,然后将其删除。
但这对我来说似乎很复杂。它还要求我将每个操作这些文件的函数包装在两个“with”子句中。
我能想到的唯一其他解决方案是切换到只处理类文件对象而不是文件名的实用程序,但这意味着我不能进行子进程调用。