Size: a a a

2020 October 06

AM

Artem Malyshev in rannts
Лучше б лямбды типизированные завезли...
источник

AM

Artem Malyshev in rannts
источник

💭П

💭 Руслан Прохоров... in rannts
Помолились и в продакшен :-)
источник

F

Fred in rannts
Замечательно конечно но не поюзать на работе
источник

F

Fred in rannts
😔
источник

RB

Roman Bolkhovitin in rannts
До первого патча нельзя (с) А.В.Суворов
источник

F

Fred in rannts
Да нам хотя бы версию апнуть мы на 35 сидим из за ограничений
источник

F

Fred in rannts
😔
источник

F

Fred in rannts
Уже стреляем себе в ногу
источник

F

Fred in rannts
Из за некоторых либ которые с 36 могут работать и выше
источник

RB

Roman Bolkhovitin in rannts
Понимаю твою боль. У меня 2.6 в опенвз полгода назад в проде был, сейчас 3.7 и докер на том же проекте 😊
источник

РГ

Роман Гладков... in rannts
Кстати про докер, как планируете решать проблему с лимитом на скачивания образов?
источник

RB

Roman Bolkhovitin in rannts
Я думаю это вообще мало кого касается. Слои базовых образов закэшированы, а остальное в частных реджистри. Ну в самом крайнем случае одну учетку можно оплатить, там лимитов нет.
источник

AB

Artem B in rannts
Роман Гладков
Кстати про докер, как планируете решать проблему с лимитом на скачивания образов?
Лимит на скачивая образов? Wat?!
источник

VD

Vladimir Deev in rannts
Всем привет. Посоветуйте, пожалуйста, в какую сторону стоит копать.

Есть приватная либа, которая умеет работать с 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).

Вот не пойму в какую сторону смотреть - метаклассы или фабрики?)
источник

VD

Vladimir Deev in rannts
Да, еще важное дополнение - либы будут в разных репозиториях + бэк, который юзает эти либы, тоже отдельно хранится.
источник

RB

Roman Bolkhovitin in rannts
Для обертки по идее подойдет обычный декоратор, только не в виде аннотации, а как
lib_api.func = decorator(lib_api.func)

Ну или контекстный менеджер, что наверное более питонячий вариант и без манкипатчинга
источник

VD

Vladimir Deev in rannts
Roman Bolkhovitin
Для обертки по идее подойдет обычный декоратор, только не в виде аннотации, а как
lib_api.func = decorator(lib_api.func)

Ну или контекстный менеджер, что наверное более питонячий вариант и без манкипатчинга
такое надо на каждую функцию проделывать? а если их много?)
источник

VD

Vladimir Deev in rannts
там на самом деле каждая вызываемая функция уже обернута специальными декоратором, который хранится внутри либы. вот в этом декораторе сейчас мы лезем в базу в случае эксепшена, и это хочется оттуда убрать.
источник

VD

Vladimir Deev in rannts
думали как-то отнаследоваться от этого декоратора, но что-то не взлетело
источник