Всем привет. Посоветуйте, пожалуйста, в какую сторону стоит копать.
Есть приватная либа, которая умеет работать с API сторонненго сервиса. Для простоты в нее был в своё время добавлен код, который в определенных ситуациях ходит в базу и делать там update.
Сейчас хочется это выпилить оттуда, но тогда на уровне нашего бэкенда должен быть некий враппер, который бы умел ловить эксепшен от либы и делать update в базе. Переписывать все сильно не хочется, т.е. хочется оставить вызовы our_lib_api.cool_func(a, b)
без изменений.
Есть идея заменить
our_lib_api = LibAPI()
на
our_lib_api = LibAPIWrapper()
где LibAPIWrapper() будет пробрасывать все вызовы внутть LibAPI, но при этом чтобы он мог ловить из нее эксепшены и апдейтить данные в БД. Ну и в идеале чтобы интроспекция не сломалась и можно было ходить по коду нормально.
Также, у нас сейчас появляется другая задача - у нас появляется либа, которая работает со другим похожим сервисом LibAPI2, в которой будут похожие функции, ну и нужно некое решение, которео бы позволило работать с нужной API в зависимости от объекта БД, который мы получили (если object.service == 'API', то ходим в API, если == 'API2', то API2).
Вот не пойму в какую сторону смотреть - метаклассы или фабрики?)