Я пишу утилиту Python для выполнения большого количества запросов на сервере MySQL.Одно из требований - повторить запрос (через некоторое время), если мы обнаружим временный сбой (например, если сеть временно не работает).Мы используем MySQL Connector / Python .
Основная идея:
try:
cursor = cnx.get_cursor()
except:
# If error is temporary, wait and retry
# else stop
try:
cursor.execute(request)
except:
# If error is temporary, wait and retry
# else stop
Создание курсора и запроса обрабатываются отдельно для облегчения обработки ошибок.
Проблема в том, что трудно обнаружить случаи, когда стоит повторить попытку.AFAI, отображение между ошибками MySQL и PEP 249 в MysQL Connector / Python нелегко работать.Например, ошибка 2013
(потерянное соединение с сервером) отображается на InterfaceError
, а ошибка 2006
(сервер ушел) отображается на OperationalError
, в то время как в обоих случаях следует повторить попытку.
Поэтому мне было интересно, существует ли традиционный способ (вероятно, основанный на errno
) для классификации таких ошибок.