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

时间:2019-02-06 12:09:16

标签: django google-app-engine google-cloud-platform google-cloud-storage dropzone.js

我有一个在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中

Every Chunk Upload takes 15 sec

enter image description here

另外,当将我的块大小增加到8 MB时,请求将被取消,因为它花费了30秒以上。

请帮助!

2 个答案:

答案 0 :(得分:1)

因此,PHP文档提供了CloudStorageTools::createUploadUrl()

  

与从App Engine应用程序写入Google Cloud Storage相比,用户直接将文件直接上传至Google Cloud Storage更快,更具成本效益,因为这会浪费实例时间并增加成本。此外,文件写入不会在对应用程序的请求内发生。因此,它不受60秒的限制,否则该限制将适用,并且允许上传非常大的文件。

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

但是python cloudstorage文档似乎没有对应的部分

但是,旧的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

答案 1 :(得分: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