RU

PPTX → озвученный MP4: как устроен пайплайн, который не ждёт сам себя

Есть презентация и текст лекции — нужен MP4, где каждый слайд висит ровно столько, сколько звучит озвучка. Прототип собирается за час, а дальше начи…

pythonceleryffmpeglibreofficettsмногопоточностьas_completedвидеогенерацияsqlalchemypdftoppm
Habr
RU

Предзагрузил пачкой — получил N² запросов. Как expire_on_commit превращает оптимизацию в квадрат

Бывают ошибки, которые не видит ни ревью, ни тесты: код отрабатывает правильно, прогон зелёный, а запросов к базе он делает в сто раз больше прежнег…

sqlalchemyormpostgresqlpythonn+1оптимизацияпроизводительностьexpire_on_commitпрофилирование
Habr
RU

Browser Policy Manager: распаковка

В предыдущих публикациях я уже рассказывал, зачем вообще появился Browser Policy Manager, почему я начал с Firefox Enterprise Policies и почему не с…

firefoxbrowser policy managerкорпоративные политикиpolicies.jsonfastapisqlalchemyjson schemaсистемное администрированиеинформационная безопасностьopen source
Habr
RU

Чтобы ваши тесты работали быстрее, нужен простой советский… xdist. Я измерил. Часть 2

В первой части я ускорил большой интеграционный pytest-сьют с получаса до полутора минут за счёт инфраструктурных правок. Во второй проверяю следующ…

pytestpytest-xdistpythonxdistинтеграционные тестыускорение тестовпараллельное тестированиеpostgresqlsqlalchemyredis
Habr
RU

Ваши тесты медленные не из-за базы данных. Я измерил

Есть устойчивое поверье: интеграционные тесты медленные, потому что ходят в настоящую базу. «Подними SQLite в памяти», «замокай репозитории», «не го…

pytestpytest-asyncioинтеграционные тестыPythonsqlalchemypostgresqlfixturesasynciocprofileevent loop
Habr
RU

Три архитектурных решения для multi-tenant B2B SaaS, о которых я пожалел, что не узнал раньше

Самая дорогая ошибка моего B2B SaaS имела ровно одну строчку Самая дорогая ошибка моего B2B SaaS имела ровно одну строчку: TENANT_ID = “tenant-1” в…

multi-tenantfastapipostgresqlsqlalchemyexclude using gistargon2idpbkdf2152-фзaudit logb2b saas