Google App Engine在文件上传时的响应时间非常慢

问题描述 投票:2回答:2

我有一个运行在GAE(Google App Engine)标准环境中的Django应用程序。我正在通过我的应用程序将视频上​​传到谷歌云桶(利用前端的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))

每个Chunk Upload需要15秒,所有时间都花在TTFB上

Every Chunk Upload takes 15 sec

enter image description here

此外,当我将块大小增加到8 MB时,请求会被取消,因为它需要超过30秒。

请帮忙!!

django google-app-engine google-cloud-platform google-cloud-storage dropzone.js
2个回答
1
投票

所以PHP文档提供CloudStorageTools::createUploadUrl()

用户将文件直接上传到Google云端存储比从App Engine应用程序写入Google云端存储更快,更具成本效益,因为这会耗费实例时间并产生成本。而且,在对应用程序的请求中不会发生文件写入。因此,它免除了否则将适用的60秒限制,并允许上传非常大的文件。

https://cloud.google.com/appengine/docs/standard/php/googlestorage/user_upload#createuploadurl_options

但是python云存储文档似乎没有互惠的部分

但是,旧的blobstore文档具有类似名称create_upload_url(),您可以在其中指定gs_bucket_name

https://cloud.google.com/appengine/docs/standard/python/refdocs/google.appengine.ext.blobstore.blobstore#google.appengine.ext.blobstore.blobstore.create_upload_url

所以也许会这样做

有关blobstore文档的更多信息:

https://cloud.google.com/appengine/docs/standard/python/tools/webapp/blobstorehandlers#BlobstoreUploadHandler


0
投票

将大文件上传到Google Cloud的最佳方式是do it directly to the Google Cloud Storage。可以使用两种不同的方法完成此任务:

  1. 上传并行块(最多32个)然后composing them to one object。使用这种方法,不要忘记删除临时块。
  2. 使用可恢复的上传,这将是automatically resumed when interrupted。这是example code do upload video using javascript

© www.soinside.com 2019 - 2024. All rights reserved.