Google bigquery GoogleApiException:Google.api.Requests.RequestError在流式传输到BigQuery时出现后端错误[500]

Google bigquery GoogleApiException:Google.api.Requests.RequestError在流式传输到BigQuery时出现后端错误[500],google-bigquery,Google Bigquery,在过去一年左右的时间里,我从Azure中用c编写的服务将数据流式传输到BigQuery,最近开始出现越来越多的以下错误—大多数请求成功: 消息:[GoogleApiException:Google.api.Requests.requestan错误 发生内部错误,请求无法完成。[500] 错误[ 消息[发生内部错误,请求无法完成。]位置[-]原因[internalError]域[global]] 这是我在服务中使用的代码: public async Task<TableDataInsertA

在过去一年左右的时间里,我从Azure中用c编写的服务将数据流式传输到BigQuery,最近开始出现越来越多的以下错误—大多数请求成功:

消息:[GoogleApiException:Google.api.Requests.requestan错误 发生内部错误,请求无法完成。[500] 错误[ 消息[发生内部错误,请求无法完成。]位置[-]原因[internalError]域[global]]

这是我在服务中使用的代码:

public async Task<TableDataInsertAllResponse> Update(List<TableDataInsertAllRequest.RowsData> rows, string tableSuffix)
        {
            var request = new TableDataInsertAllRequest {Rows = rows, TemplateSuffix = tableSuffix};
            var insertRequest = mBigqueryService.Tabledata.InsertAll(request, ProjectId, mDatasetId, mTableId);

            return await insertRequest.ExecuteAsync();
        }

就像其他云服务一样,BigQuery不提供100%正常运行时间SLA,实际上是99.9%,因此遇到这样的暂时性错误并不罕见。我们也经常在我们的申请中收到它们

您需要在应用程序中构建指数退避和重试逻辑来处理此类错误。这样做的一个好方法是使用队列将数据流传输到BigQuery。这就是我们所做的,它对我们非常有效

更多信息:


指数退避很好,但在这个特定的服务中不是强制性的,因为它更像是一个监控服务。这项服务运行了大约一年,我们在过去的两个月里开始出现这些错误,而且错误的数量还在增加。你可以通过谷歌的支持渠道提出投诉,但我很肯定他们会给你同样类型的回复。我们这么做的时候他们告诉了我们。谢谢格雷厄姆!我试试看。