检查文件是否已完成写入Django中的Amazon S3

时间:2012-10-15 22:55:19

标签: django amazon-s3 amazon-web-services boto

在视图中,我正在生成一个文件,将其保存为Django模型(文件字段)中的字段并返回url:

...
obj.pdf.save(obj.hash_id + '.pdf', File(open(destination_path, 'r')))

ret = {
  'pdfUrl': obj.pdf.url
}

ret = json.dumps(ret)
return HttpResponse(ret, mimetype='text/plain')

然后用户被重定向到ret中返回的url,有时候这是一个空白的pdf,但如果他们稍后刷新,那么完整的pdf就在那里。我怀疑S3没有完成将它保存到最后。在返回url之前,在Django中是否有任何干净的方法来确保文件是可访问的?

2 个答案:

答案 0 :(得分:0)

通过用户的方式在脚本中自己访问对象,并查看其大小是否符合特定阈值,或者如果知道大小,是否全部存在。

答案 1 :(得分:0)

根据boto IRC频道中的几个人,由于S3是分布式的,因此无法判断您上传的文件是否已传播。但它会很快发生。希望这可以帮助其他人解决这个问题;你只需要等一下。这可能会在未来发生变化。