【问题标题】:Uploading files into Google Cloud Storage: 500 Backend Error将文件上传到 Google Cloud Storage:500 后端错误
【发布时间】:2016-01-08 11:22:04
【问题描述】:

我们在将文件移动到 BigQuery 之前尝试将文件上传到 Google Cloud Storage,但在某些上传过程中,我们经常遇到“500 Internal Server Error”或“410 Gone”(以下原始消息)。

我们使用的是官方 SDK,并添加了带指数退避的重试,但错误总是在这里。请问您有什么建议吗?

这是我们上传 (scala) 的方式:

val credential = new GoogleCredential().setAccessToken(accessToken)

val requestInitializer = new HttpRequestInitializer() {
    def initialize(request: HttpRequest): Unit = {
        credential.initialize(request)

        // to avoid read timed out exception
        request.setConnectTimeout(200000)
        request.setReadTimeout(200000)

        request.setIOExceptionHandler(new 
            HttpBackOffIOExceptionHandler(new ExponentialBackOff()))
        request.setUnsuccessfulResponseHandler(new 
            HttpBackOffUnsuccessfulResponseHandler(new ExponentialBackOff()))
    }
}

val storage = new Storage.Builder(
    new NetHttpTransport,
    JacksonFactory.getDefaultInstance,
    requestInitializer
).setApplicationName("MyAppHere").build

val objectMetadata = new StorageObject()
    .setBucket(bucketName)
    .setName(distantFileName)

val isc = new InputStreamContent("binary/octet-stream", fis)
val length = isc.getLength
val insertObject = storage.objects().insert(bucketName, objectMetadata, isc)
// For small files, you may wish to call setDirectUploadEnabled(true), to
// reduce the number of HTTP requests made to the server.
if (length > 0 && length <= 2 * 1000 * 1000 /* 2MB */ ) {
    insertObject.getMediaHttpUploader.setDirectUploadEnabled(true)
}
insertObject.execute()

我们的 scala 依赖项:

"com.google.api-client" % "google-api-client" % "1.18.0-rc",
"com.google.api-client" % "google-api-client-jackson2" % "1.18.0-rc",
"com.google.apis" % "google-api-services-bigquery" % "v2-rev142-1.18.0-rc",
"com.google.apis" % "google-api-services-storage" % "v1-rev1-1.18.0-rc",
"com.google.http-client" % "google-http-client" % "1.18.0-rc",
"com.google.oauth-client" % "google-oauth-client" % "1.18.0-rc"

原始 SDK 错误响应:

500 Internal Server Error
    {
        "code" : 500,
        "errors" : [ {
        "domain" : "global",
        "message" : "Backend Error",
        "reason" : "backendError"
    } ],
        "message" : "Backend Error"
    }

410 Gone
    {
        "code" : 500,
        "errors" : [ {
        "domain" : "global",
        "message" : "Backend Error",
        "reason" : "backendError"
    } ],
        "message" : "Backend Error"
    }

【问题讨论】:

  • 得到 410 Gone 作为对上述代码的响应非常令人惊讶,尤其是当结果包含“code”:“500”时。您是否有某种防火墙可能会修改您的结果?
  • @BrandonYarbrough 我们的防火墙不修改任何东西,它只是过滤互联网流量

标签: google-app-engine google-bigquery google-cloud-storage


【解决方案1】:

每个Backend error 都应进行指数重试处理,因为可能存在服务问题。

如果在假设 10 小时后错误仍然存​​在,那么您应该联系支持人员,以便为您的问题提供一对一的帮助。

【讨论】:

  • 该错误是否可能是由于 CSV 格式错误?
  • 这是不同的错误,例如:第 0 行错误,无法识别字段 0
猜你喜欢
  • 2018-12-23
  • 1970-01-01
  • 1970-01-01
  • 2019-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-31
相关资源
最近更新 更多