"Ошибка бэкенда" при загрузке в таблицу BigQuery
Похоже, это была распространенная проблема, это случается время от времени в моих нагрузочных заданиях. Когда это происходит, ответа нет, но кажется, что данные все еще загружены, я задаюсь вопросом, что лучше всего сделать в моей программе? могу ли я просто всегда игнорировать его или подождать несколько секунд и продолжить?
Спасибо
1 ответ:
Есть два способа получить ошибку при выполнении задания bigquery, и правильная обработка зависит от того, как вы получите эту ошибку:
- Вы можете получить ошибку на HTTP-запросе, которая преобразуется в код ответа HTTP.
- Вы можете получить задание, имеющее
errorResult
, которое указывает на неудачу задания.Во втором случае ваши варианты просты, потому что вы знаете, что работа не удалась. Если задание было заданием загрузки, оно не должно было изменять таблицу. В первом случае, когда вы получаете код ошибки HTTP, который можно повторить (417 timeout, 500 internalError, 503 backendError и т. д.), Это немного сложнее, так как ошибка может иметь ошибку связи, и вы не знаете, получил ли сервер сообщение успешно или нет. Чтобы быть уверенным, нужно указать свой собственный jobId. Поскольку идентификаторы заданий должны быть уникальными, вы можете повторить попытку отправки того же задания снова в случае ошибки связи, и вам не нужно беспокоиться, что оно будет выполняться дважды.
К повторять: Если вы получаете ответ
HTTP 503
сreason=backendError
, это ошибка соединения, которая указывает на временное состояние сети. Однако это не означает, что ваша работа провалилась.Если вы можете найти задание, и результат задания содержит ошибку с
reason=internalError
, но сообщение об ошибке, которое говорит: "Backend error. Работа прервана" это означает, что ваша работа провалилась. Повторная попытка должна быть безопасной.