关于在Google App Engine中上传图片的503和400

时间:2012-05-22 13:56:25

标签: google-app-engine

最近我在将文件上传到我的Java gae应用程序时遇到了两个问题。 我正在使用blobstore doc中描述的tecnique。

  1. 对于常规文件,偶尔(比如15%的时间)客户端会收到“503 Service Unavailable”。
  2. 对于高分辨率图像(例如7000x10000),客户端始终收到“400 Bad Request”。
  3. 在服务器上的两个案例中都没有记录错误消息,blob被正确写入,但是从不调用successPath url(createUploadUrl的回调)。由于某些原因,似乎处理上传的GAE端点崩溃了。

    我的客户端是一个js XMLHttpRequest,包含在GWT中:

    public native void uploadWithXMLHttpRequest(UploadForm uploadForm) /*-{
        var fd = new FormData();
        var files = uploadForm.@mypackage.UploadForm::getFiles()();  
        for (var i = 0; i < files.length; i++) {
            fd.append("uploadFile"+i, files[i]);
        }
        var xhr = new XMLHttpRequest();
        //xhr.upload.addEventListeners... omitted
        xhr.open("POST", uploadForm.@mypackage.UploadForm::getUploadUrl()());
        xhr.send(fd);
    }
    

    有关可能原因和解决方案/解决方法的任何想法? THX。

4 个答案:

答案 0 :(得分:1)

此问题正在由另一位遇到相同问题的用户打开的GAE票证中讨论:https://code.google.com/p/googleappengine/issues/detail?id=7619(顺便说一句,错误跟踪系统有一个&#34; start&#34;功能,允许您投票票证和接收通知)

答案 1 :(得分:0)

可能的原因:

1您上传大文件(&gt; 1MB)并将其全部写入。你应该把它写成portinal:1 write = 1MB。

2您的请求时间超过30秒 - 请使用后端。

答案 2 :(得分:0)

在这种情况下,当我们将上传信息写入您的数据存储区时,503是由错误引起的。在使用M / S数据存储区时,预计会不时出现瞬态错误。我建议您将应用转换为HRD,以尽量减少将上传信息写入数据存储区时出现错误的可能性。

400错误是由您的应用生成的在您的应用程序日志中。

答案 3 :(得分:0)

尝试使用Google云端存储,因为blob商店服务存在很多问题,因此Google正在尝试将用户从Blob迁移到GCS支持

我猜应用引擎blob商店中的图像分辨率不能超过8000,这是它造成的原因。