我有一个在GAE(Google App Engine)标准环境上运行的Django应用。我正在通过我的应用程序将视频上传到Google云存储桶(利用前端的dropzone)。我的视频很大,因此我将文件批量发送到GAE,然后重新创建并上传到GCS。一切正常。
我的问题是上传块的请求需要很长时间 (上传1MB数据块需要15s,我删除了该数据块的处理过程,但仍然需要15s)
@login_required(login_url="/login/")
@require_http_methods(["POST"])
def upload_chunks(request):
try:
file = request.FILES['file']
# upload_utils.upload_image_file(file); //Commented it out
return JsonResponse({"status": True})
except Exception as e:
return HttpResponseServerError(str(e))
每次块上传都需要15秒,所有时间都花在了TTFB中
另外,当将我的块大小增加到8 MB时,请求将被取消,因为它花费了30秒以上。
请帮助!
答案 0 :(得分:1)
因此,PHP文档提供了CloudStorageTools::createUploadUrl()
:
与从App Engine应用程序写入Google Cloud Storage相比,用户直接将文件直接上传至Google Cloud Storage更快,更具成本效益,因为这会浪费实例时间并增加成本。此外,文件写入不会在对应用程序的请求内发生。因此,它不受60秒的限制,否则该限制将适用,并且允许上传非常大的文件。
但是python cloudstorage文档似乎没有对应的部分
但是,旧的Blobstore文档具有类似的名称create_upload_url()
,您可以在其中指定gs_bucket_name
:
所以也许那样做
有关blobstore文档的更多信息:
答案 1 :(得分:0)
将大文件上传到Google Cloud的最佳方法是访问do it directly to the Google Cloud Storage。可以使用两种不同的方法来完成此任务:
上载并行块(最多32个),然后上载composing them to one object。使用这种方法,不要忘记删除临时块。
使用可恢复的上载,即automatically resumed when interrupted。 这是example code do upload video using javascript: