使用Django在Heroku上发出大文件PUT请求

时间:2012-06-07 19:45:30

标签: django api file-upload heroku django-file-upload

我正在为Django应用程序创建API,其中一个PUT请求允许(非常)大文件上传。我试图在Heroku上托管应用程序,但我遇到了文件上传和30秒限制和短暂文件系统的一些问题。我现在正试图将文件传递到s3存储桶(通过boto并滥用multipart_upload功能),但是在上传完成之前,该过程正在消失。我很早就找到了this extremely helpful answer,这对API一般来说是很好的建议,但是没有解决Heroku问题。

在我看来

for i, handler in enumerate(upload_handlers):
    chunk = request.read(handler.chunk_size)
        while chunk:
            handler.write_multipart_upload(chunk, counters[i], filename=file_name)
            counters[i] += len(chunk)
            chunk = request.read(handler.chunk_size)

for i, handler in enumerate(upload_handlers):
    file_obj = handler.file_complete(counters[i])

在我的处理程序

def write_multipart_upload(self, raw_data, start, filename=None):
    if not self.mp:
        self._validate_file(filename=filename)
        self.mp = self.bucket.initiate_multipart_upload('feeds/' + self.file_name)

    self.buffer.write(raw_data)

    if self.buffer.len:
        self.buffer.seek(0)
        self.mp.upload_part_from_file(self.buffer, self.total_chunks)
        self.buffer.close()
        self.buffer = StringIO()

def file_complete(self, file_size):
    self.mp.complete_upload()
    self.file

也许这变得太复杂了。在这一点上,我正在寻找简单易懂的东西。如果有人有一个基于PUT的大型文件上传API的实例,我会废弃Heroku并对此感到满意。提前谢谢。

0 个答案:

没有答案