python – 将文件和对象写入amazon s3

前端之家收集整理的这篇文章主要介绍了python – 将文件和对象写入amazon s3前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在使用amazon S3将动态生成文件分发给S3.

在本地服务器上,我可以使用

destination = open(VIDEO_DIR + newvideo.name,'wb+')

生成的视频存储到VIDEO_DIR.newvideo.name位置

是否有可行的方法将VIDEO_DIR更改为S3端点位置.那么动态生成的视频可以直接写入S3服务器吗?

另一个问题是:有没有可行的方法直接将对象写入S3?例如,一个chunklet = Chunklet(),如何直接将这个chunklet对象写入S3服务器?

我可以先创建一个本地文件并使用S3 API.例如,

mime = mimetypes.guess_type(filename)[0]
k = Key(b)
k.key = filename
k.set_Metadata("Content-Type",mime)
k.set_contents_from_filename(filename)
k.set_acl('public-read')

但我想提高效率.使用Python.

最佳答案
使用boto library访问S3存储.您仍然必须先将数据写入(临时)文件,然后才能发送它,因为尚未实现流写入方法.

我将使用上下文管理器来解决这个限制:

import tempfile
from contextlib import contextmanager

@contextmanager
def s3upload(key):
    with tempfile.SpooledTemporaryFile(max_size=1024*10) as buffer:  # Size in bytes
        yield buffer  # After this,the file is typically written to
        buffer.seek(0)  # So that reading the file starts from its beginning
        key.set_contents_from_file(buffer)

将其用作上下文托管文件对象:

k = Key(b)
k.key = filename
k.set_Metadata("Content-Type",mime)

with s3upload(k) as out:
    out.write(chunklet)
原文链接:https://www.f2er.com/python/439379.html

猜你在找的Python相关文章