У меня есть скрипт Python, который подключается к серверу и загружает большое количество видео и фотографий. И когда я говорю большой, я имею в виду в десятках тысяч. Общий объем загруженных данных, вероятно, будет измеримы в терабайтах. Некоторые из отдельных видео также довольно большие, возможно, превышают 2 ГБ и далее. Недавно я переписал скрипт, чтобы переключиться с использования запросов на асинхронный подход с Asyncio (и aiohttp и aiofiles ) по причинам, которые должны быть очевидными.
Поскольку эта программа будет загружать так много файлов, я, естественно, ожидаю некоторых ошибок. При загрузке видео (фотографии не являются проблемой), наряду с aiohttp.clientconnectionerror и aiohttp.clientsslerror , у меня есть общий улов ошибки; Каждое исключение, которое я считаю неспособностью загрузить, и зарегистрировался в файле ошибок, который будет предпринят снова позже. Затем сценарий продолжает попытаться загрузить следующее видео. Я не хочу полностью переоценить загрузку с этим сценарием, так как я думаю, что это значительно замедлит эту программу - плюс, так как содержимое на сервере варьируется, файл может быть просто не загружаемым, и я не хочу иметь Моя программа продолжает стучать головой по стене, когда она должна просто двигаться дальше. Я говорю все это, потому что я не хочу 50 комментариев, в которых говорилось, что «Ошибка глотания - это плохо», когда я знаю это. Полем Опять же, некоторые из этих видео очень велики, и время для их загрузки пропорционально очень большое. Для некоторых загрузок, время, которое он требует, превышает все, что говорит внутренние часы Python, слишком длинное, и поэтому, даже если программа функционирует должным образом и без проблем, Python убьет загрузку, думая, что что -то пошло не так или что -то поймало в бесконечном цикле. Я мог бы просто поймать Timeouterror и перезагрузить его загрузку с того места, где оно отключено, но это потребует больше вычислений и отягощало бы функцию для других загрузок, у которых нет этой проблемы. Я чувствую, что гораздо лучшее решение состоит в том, чтобы не заставить интерпретатора бросить ошибку, когда ничего не пошло не так. Способ полностью подавить интерпретатора от рассмотрения этой ошибки? Или есть лучший способ, чем два, которые я предложил? мой интерпретатор Python. Asyncio считает, что задача, продолжающаяся слишком долго, означает, что она застряла в цикле или существовало условие гонки или какая -то другая логическая ошибка. Мне нужен мой переводчик, чтобы признать, что задача, занимающая 20 минут, приемлемо.
Подробнее здесь: https://stackoverflow.com/questions/794 ... -exception
Как «проглотить» исключение библиотеки Python Asyncio Timeouterror ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение