Closed kuk closed 5 years ago
Это grpc так возвращает ошибки, могут быть как ошибки сервера, так и ошибки запроса (например, попытка создать два ресурса с одинаковым именем). Их нужно обрабатывать таким образом:
try:
...
except grpc.RpcError as e:
print(e.details())
status_code = e.code()
print(status_code.name)
print(status_code.value)
Да, спасибо. Вы показали по сути как проигнорировать эти ошибки (просто print). Мы сейчас так и делаем, только ещё несколько раз пытаемся повторить код из try ... except.
Хотелось бы понять причины этих ошибок, почему они случаются. Например, на сколько я помню, при попытке создать два ресурса с одинаковым именем, мы получаем понятный стектрейс, где написано что-то типа "такое имя уже есть".
В исходном вопросе есть три стектрейса, можно ли по ним понять причины их возникновения?
Первые два трейсбека выглядят как ошибки клиентского DNS. Последний выглядит как ошибка API, к сожалению, только по нему сложно выявить причину.
В sdk можно настроить политику ретраев через interceptor:
interceptor = yandexcloud.RetryInterceptor(max_retry_count=5, back_off_func=yandexcloud.default_backoff())
sdk = yandexcloud.SDK(interceptor=interceptor, token=token)
По умолчанию мы повторяем запросы на Unavailable и на ResourceExhausted.
Большое спасибо!
Очень редко при использовании пакета случаются стектрейсы, который тяжело понять. Вы не могли помочь расшифровать что означают эти ошибки? Правильно ли я понимаю, что они означают, что на стороне YC что-то пошло не так и нужно просто попробовать сделать то же самое ещё раз (на практике я так и поступаю)?
Ошибки случаются, когда получаю список инстансов, дисков, подсетей, примеры кода:
Три типа стектрейсов: