Django 5.2 LTS в продукция: трите промени, които имаха най голямо значение
Django 5.2 LTS излезе миналата пролет и ние прекарахме първите шест месеца в изчакване: качване на staging, наблюдение докато LTS екосистемата се догонва, след това миграция в продукция. Този прозорец се затвори през януари и сега имаме три месеца реален товар зад гърба си. Три промени заслужават да бъдат споменати; останалото се държа точно както беше обещано в release notes.
Съставни първични ключове
Нашият фискален сервиз пази леджър с ключ (site_id, fiscal_day, sequence). Преди 5.2 имитирахме това с unique together и auto integer сурогат, което работеше, но създаваше два индекса за поддръжка и постоянен източник на объркване в ORM заявките. Истинските съставни първични ключове ни позволиха да махнем сурогата, да смалим таблицата с 12% и което имаше значение при ревю да опишем схемата в модела точно така, както бизнесът я описва на хартия.
Async ORM без скритите капани
Вече ползвахме async на няколко места. Това, което се промени в 5.2, е че моделите около
транзакциите и управлението на connection ите най накрая са предсказуеми. Нашият ingestion worker този,
който консумира MQTT събития от станциите и записва транзакции премина на async от край до край и
устоя на около 4.2× по висок throughput на същия pod, с по ниска tail latency, не по висока.
Продължаваме да пишем sync код по подразбиране; async вече е инструмент, който избираме съзнателно, а не
риск.
Рендиране на форми през темплейти
Малка промяна с големи последствия. Формите се рендират през template engine в 5.2 по подразбиране, което означава, че нашите персонализации спряха да живеят в subclass ове на widget и и се преместиха в темплейти, които front end екипът може да чете. Три седмици натрупани тикети с widget hack ове се изпариха за един следобед.
Какво не използвахме
Пропуснахме засега промените в поведението на QuerySet.none() при празен списък
семантиката е коректна, но нашият съществуващ код разчиташе на старата форма в две отчетни заявки, а
пренаписването им не си струваше в прозореца за upgrade. Задача за лятото.
оставете коментар