ReadTimeout: The read operation timed out
Добрый день, использую библиотеку Dadata для работы в Python.
После обработки 3300 записей выполнение запросов остановилось с ошибкой
ReadTimeout: The read operation timed out
На счете средств достаточно, при ручном повторном запуске, выполнение запросов продолжилось.
В чем ошибка?
Ответ
Добрый день! Пакет dadata для Python использует таймаут в 3 секунды. Ошибка "read operation timed out" указывает на то, что сервер не ответил за это время. Причина может быть в каких-то временных сетевых проблемах, либо особенностях данных в самом запросе.
Далее наблюдается одна и та же картина
около 7 тыс запросов и разные ошибки.
Были:
ConnectTimeout: _ssl.c:980: The handshake operation timed out
RemoteProtocolError: Server disconnected without sending a response.
Если они все связаны с "таймаут в 3 секунды", возможно ли этот параметр настроить отдельно
Ограничения в 20 запросов в минуту не существует. Ошибка ConnectTimeout не связана с таймаутом на чтение данных — здесь причина скорее в сети.
Убедитесь, что вы не создаете экземпляр Dadata на каждый запрос, а создали один экземпляр в начале и дальше переиспользуете его.
Можете попробовать обрабатывать исключения и повторять запрос (если таких исключений немного). Если много — имеет смысл разбираться с сетью (работа фаервола, прокси, нестабильный интернет, и так далее).
Работаю внутри
with Dadata(token, secret) as dadata:
Пробовал запускать через исключение
try:
js = dadata.clean(name='address', source=adres)
except (RemoteProtocolError, ReadTimeout, ConnectTimeout):
time.sleep(30)
js = dadata.clean(name='address', source=adres)
но в такой форме хоть и дает отработать больше запросов, но все равно потом ругается, что не знает имени "RemoteProtocolError", хотя сам ранее выдавал такую ошибку.
не знает имени "RemoteProtocolError"
Это проблема в вашем Python-коде. Скорее всего, не импортировали соответствующий класс.
Сервис поддержки клиентов работает на платформе UserEcho
Добрый день! Пакет dadata для Python использует таймаут в 3 секунды. Ошибка "read operation timed out" указывает на то, что сервер не ответил за это время. Причина может быть в каких-то временных сетевых проблемах, либо особенностях данных в самом запросе.