Techniki Zaawansowane
3 godz. 43 min · Python · Full-stack i Programowanie
Grzegorz SzymborskiProgramistaJeżeli na samym początku nie przygotujemy dobrze projektu, to gdy wrócimy do niego po dłuższym czasie - czekają nas kłopoty. Jeżeli uda się nam go uruchomić, to rozeznanie się w nim będzie udręką. Prowadzący pokaże Ci jak wyglądają jego produkcyjne aplikacje, na co zwraca uwagę i co pomaga mu trzymać porządek.
Biblioteka pytest posiada wiele ciekawych funkcjonalności. Parametryzowanie testów, fixture i uproszczona składnia pozwalają nam skupić na testowaniu tego, co kluczowe, wydzielając mniej istotne fragmenty kodu. To wszystko sprawia, że w pewnym momencie łatwiej będzie Ci pisać testy, niż ręcznie sprawdzać poprawność działania apki.
Jeżeli aplikacja, którą stworzysz, osiągnie dużą popularność, może się okazać, że przytłoczona dużym ruchem zacznie spowalniać... lub całkowicie przestanie odpowiadać. Opiszemy różne techniki służące temu, by temu zaradzić - od metod select i prefetch related, aż po cache. Na deser przeprowadzimy na stronie test obciążeniowy za pomocą narzędzia locust.
Django i Postgres to świetne połączenie. Framework ten posiada wbudowaną obsługę wyszukiwania pełnotekstowego oferowanego przez tę bazę. Warto wiedzieć, kiedy jej użyć, a kiedy wystarczy zwykłe icontains.
ORM w Django ułatwia mnóstwo operacji. A czasem nie dość to, że ułatwia... to jeszcze przyspiesza! Chcemy zainspirować Cię czterema metodami: annotate, aggregate, bulkupdate i bulkcreate. Gdy pojawią się one w naszym kodzie, zaczniemy doceniać uroki frameworka Django.
Kurs jest stworzony dla osób, które znają już podstawy Django i wiedzą, jak pisać proste strony. Znają modele, widoki, oraz niestraszny im jest Python. Zalecana jest również podstawowa znajomość dowolnej relacyjnej bazy danych. W kursie przedstawiamy niekiedy narzędzia i praktyczne przykłady, jak można ich użyć, ale w celu zaimplementowania konkretnego rozwiązania w projekcie wymagana będzie umiejętność czytania dokumentacji.
Rozdziale zaprezentuje Wam jedną z technik optymalizacji a mianowicie Select Triple
Threat który pozwala przyspieszyć zapytania do bazy danych.
Mamy przygotowane trzy modele ponownie autora tagi i artykuły żeby
trochę lepiej pokazać w czym będzie na czym będzie polegał problem.
Stworzyłem komendę.
Która wygeneruje nam dużą ilość artykułów.
Jest to przepis korzystający z biblioteki model Baker.
Tworzy on jakieś artykuły wywołały go.
Za pomocą.
Komendy między.
W artykule wpisujemy.
Podajemy ile konkretnie ma artykułów wygenerować dałem 10.
Zobaczmy. Pod adresem Flesz artykuły.
Mamy tutaj dostępną listę artykułów i są wygenerowane na nowo.
Zajrzymy do środka to mamy szczegóły i zajrzymy sobie w derbach Tur bar.
Mamy jedno zapytanie do bazy danych
czyli jest bardzo dobrze jak sobie podejrzewamy że ono jest błyskawiczne nie
ma żadnego problemu strona będzie działała tak jak trzeba.
Ale wyobraźmy sobie że chcemy na liście
artykułów dodać jeszcze informacje o autorze.
Zajrzymy w Temple.
I tutaj gdzie kierujemy po artykułach i wpisujemy Article T.
Może w Small Article auto name.
Odświeżony. Co się stało.
Pojawiły się nam nazwiska autorów imiona ale jednocześnie
liczba zapytań do bazy danych wzrosła do 15.
Zajrzymy co tu się wydarzyło.
O ile poprzednio mieliśmy jedynie zapytanie po artykuły to w tym momencie
mamy zapytanie do autora o ID 13 ID 14 15 itd.
Mamy zapytania osobne
po wszystkich autorów którzy są tutaj wymienieni Django domyślnie nie pobiera
obiektów które są powiązane z naszym głównym obiektem dlatego
Django zakłada że nie będziemy korzystać z niczego poza artykułem.
Jeżeli natomiast wykorzystamy.
Pole z innego modelu z modelu który jest w relacji to zostanie wykonane w momencie
jeśli Jago napotka jakieś odwołanie do pola z zewnątrz.
Zostanie wykonane osobne zapytanie.
Jest to.
Duża pułapka ponieważ łatwo jest przeoczyć gdzie używali takich pól zewnętrznych
gdzie mogą być takie słabe punkty naszej aplikacji i wystarczy popatrzeć
że im więcej będziemy mieć artykułów tym więcej będzie mieć zapytań i
z czasem czas odpowiedzi serwera będzie drastycznie wzrastał.
żeby rozwiązać tę bolączka wchodzimy w widok.
Do kwartetu.
Dodajemy metodę selekcji glajta i wskazujemy które konkretnie pola są
dołączane później w tym przypadku będzie to pole autor.
Zobaczył w jaki sposób jego sobie z tym
radzi odświeżyć my i wracamy z powrotem do jednego zapytania.
Mamy dalej autorów czyli wszystko jest
teoretycznie tak jak powinno być ale zajrzymy do środka.
Co się stało.
Wpisując Select later dajemy znać jakiego będziemy korzystać z relacji.
Dlatego Django przygotowuje nieco inne zapytanie.
Zapytanie w którym dominuje
autorów tych których będziemy później używać i dzięki temu nie musimy już
odwoływać się do bazy danych Select Limited działa tylko
na relacje pojedyncze czyli albo linki albo łan.