Я хотел бы знать, существует ли способ обработки ошибок Python в долго выполняемых функциях, которые могут содержать ошибки, частично не влияющие на возможность продолжения функции.
В качестве примера, рассмотрим функцию, которая, учитывая список URL-адресов, рекурсивно извлекает ресурс и все связанные ресурсы по пути URL-адресов верхнего уровня. Он хранит полученные ресурсы в локальной файловой системе со структурой каталогов, отражающей структуру URL. По сути, это базовый рекурсивный wget для списка страниц.
Существует ряд моментов, в которых эта функция может дать сбой:
Сбой при извлечении или сохранении любого одного ресурса влияет только на способность функции продолжать обработку этого ресурса и любых дочерних ресурсов, которые могут быть связаны с ним, но можно продолжить получение других ресурсов.
Простая модель обработки ошибок заключается в том, что при первой ошибке вызывающая сторона возбуждает соответствующее исключение для обработки. Проблема в том, что он завершает функцию и не позволяет ей продолжать. Ошибка могла быть исправлена, и функция была перезапущена с самого начала, но это потребовало бы повторной работы, а любые постоянные ошибки могут означать, что мы никогда не завершим работу.
Я имею в виду несколько альтернатив:
В обсуждениях Python я часто отмечал определенные подходы, описанные как Pythonic или non -Пифонический. Я хотел бы знать, есть ли какие-либо особые подходы Pythonic к обработке описанного выше типа сценария.
Есть ли в Python какие-либо батареи, которые моделируют более сложную обработку ошибок, чем модель обработки исключений с завершением, или в более сложных элементах питания используется модель обработки ошибок, которую я должен скопировать, чтобы оставаться Pythonic?
Примечание: пожалуйста, не сосредотачивайтесь на примере. Я не ищу решения проблем в этой конкретной области, но мне показалось, что это хороший пример, который большинство людей здесь должно понять.