在 Google NLP API 中处理 50x 错误
Handling 50x errors in Google NLP API
按照 Google Sentiment Analysis Java API 中的示例,我有一个应用程序向服务发送数百个文本样本以供分析。 API 时不时地显着减慢,当与 API 控制台上的时间线关联时,它与 500 和 504 错误有关。
是否有推荐的模式来处理此类错误?我在 API 中找不到超时参数,以便能够在 5 秒后取消请求并重试。我是否必须求助于将 API 调用包装到 Future 中?
截断指数退避算法可以帮助您处理此类错误。
这里有两个来自google云平台的链接,第一个说明你想使用它的情况,第二个给你一些例子。
https://cloud.google.com/apis/design/errors#error_retries
https://cloud.google.com/storage/docs/exponential-backoff
如果这没有解决您的问题,您可以检查您的 api 请求是否达到配额。在这种情况下,您可以申请增加配额。
NLP API 的配额是每分钟(60 秒)600 个请求:https://console.cloud.google.com/apis/api/language.googleapis.com/quotas
或每100秒1000个请求,这似乎或多或少是一样的:
https://cloud.google.com/natural-language/quotas#requests
这正是我要找的 API。
文档:
还有一段代码:
LanguageServiceClient createLanguage() throws IOException {
RetrySettings retrySettings = RetrySettings.newBuilder()
.setTotalTimeout(Duration.of(60, ChronoUnit.SECONDS))
.setMaxAttempts(2)
// Some other options
.build();
LanguageServiceSettings.Builder sb =
LanguageServiceSettings.newBuilder();
sb.annotateTextSettings().setRetrySettings(retrySettings);
return LanguageServiceClient.create(sb.build());
}
按照 Google Sentiment Analysis Java API 中的示例,我有一个应用程序向服务发送数百个文本样本以供分析。 API 时不时地显着减慢,当与 API 控制台上的时间线关联时,它与 500 和 504 错误有关。
是否有推荐的模式来处理此类错误?我在 API 中找不到超时参数,以便能够在 5 秒后取消请求并重试。我是否必须求助于将 API 调用包装到 Future 中?
截断指数退避算法可以帮助您处理此类错误。
这里有两个来自google云平台的链接,第一个说明你想使用它的情况,第二个给你一些例子。
https://cloud.google.com/apis/design/errors#error_retries https://cloud.google.com/storage/docs/exponential-backoff
如果这没有解决您的问题,您可以检查您的 api 请求是否达到配额。在这种情况下,您可以申请增加配额。
NLP API 的配额是每分钟(60 秒)600 个请求:https://console.cloud.google.com/apis/api/language.googleapis.com/quotas
或每100秒1000个请求,这似乎或多或少是一样的: https://cloud.google.com/natural-language/quotas#requests
这正是我要找的 API。
文档:
还有一段代码:
LanguageServiceClient createLanguage() throws IOException {
RetrySettings retrySettings = RetrySettings.newBuilder()
.setTotalTimeout(Duration.of(60, ChronoUnit.SECONDS))
.setMaxAttempts(2)
// Some other options
.build();
LanguageServiceSettings.Builder sb =
LanguageServiceSettings.newBuilder();
sb.annotateTextSettings().setRetrySettings(retrySettings);
return LanguageServiceClient.create(sb.build());
}