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.
W poprzedniej elekcji zajmowaliśmy się metodą bank Credit.
W tej opowiemy o back Update która jak sama nazwa wskazuje jest bardzo podobna
tylko zamiast do tworzenia instancji będzie służyła do ich aktualizacji.
Przygotowałem przykład w którym w artykule mamy pole Index Field
które będzie nam służyło za taki bardzo prymitywny indeks do wyszukiwarki.
Stworzyłem metodę update Index która do
indeks Fed przypisuje Unit zakodowane czyli wycina to np.
polskie znaki zamiast masło będzie masło i łączy tytuł i opis.
Jest to bardzo prymitywny sposób żeby
stworzyć taki indeks do wyszukiwarki dodałem jeszcze.
Widok.
Również.
Dość prosty który przechodzi przez wszystkie artykuły wykonuje metodę update
Index i zapisuje wszystko i wraca ile udało się zaktualizować artykułów.
Dlatego za pomocą skryptu który jest
załączony w repozytorium tworzymy sobie wygeneruje kilka.
Aktualność kilka artykułów.
Komenda nazywa się Create Art.
Jako argument podamy sobie 30 artykułów zobaczymy w panelu administratora.
Utworzyły się zajrzymy do środka.
Dodałem jako pole tylko do odczytu pole z
indeksem żebyśmy mogli sobie sprawdzić czy faktycznie takie pole się dodaje.
I w tym momencie trzeba uruchomić ten widok.
. Pod jakim jeszcze adresem.
Są schowane pod adresem aktualizuje indeks.
Po uruchomieniu
Strona informuje nas że udało się 30 artykułu nadać indeks letniej my jeszcze.
Czy wszystko działa poprawnie zadziałało
chociaż sprawdźmy czy polskie znaki faktycznie się posuwają.
Uruchom jeszcze raz odświeżyć.
Tak mamy dzięki temu jeżeli użytkownik coś chce wyszukać jeżeli frazę którą pisze
użytkownik też usunięty z polskich akcentów to wtedy
będziemy mieć fajne wyszukiwanie które działa niezależnie od polskich znaków.
Sprawdźmy jeszcze co się dzieje pod maską.
Co się dzieje w Peru.
Widzimy że zapytania są zależne od ilości artykułów które chcemy zaktualizować.
Jeżeli byśmy tych artykułów dodali więcej z 60 jeszcze to zauważymy.
Mam tutaj 600 milisekund po odświeżenia.
Czas odświeżyć.
Nie widzicie lidera ale to jeszcze się przetwarza.
To.
Jednak.
Nie udało mi się wtedy kliknąć.
Widzimy że czas wzrósł trzykrotnie liczba zapytań również wzrosła
trzykrotnie i teraz jeżeli strona się będzie rozwijała jeżeli artykułów będzie
dochodziło dochodziło dochodziło setki tysiące to.
Będzie to rosło liniowo.
Im więcej artykułów tym więcej czasu
i ponownie tak jak lekki wiatr rozwiążemy ten problem za pomocą back update.
Aby to zrobić tworzymy zmienną Article listu bat do której piszemy tego seta.
I kierujemy po nim.
Aktualizuje indeks nie będziemy go jeszcze zapisywać.
Co komentujemy te pola i.
Wykonany z menedżera metodę back update do której przekażemy.
Artykuły do aktualizacji i wskaże które konkretnie pole nas interesuje.
Konkretnie które nas interesuje to jest indeks.
Zobaczmy co się stało.
Staliśmy błąd ponieważ.
Indeks Fed się nazywa Polanie indeks.
Widzimy że mamy podane zero.
Mamy pięć zapytań.
Dlatego.
Podajemy jeszcze użytkownikowi co się stało i ile.
Artykułów się zaktualizowany w ten sposób
back update zwraca liczbę obiektów zwróćmy użytkownikowi.
Długość.
Listy do aktualizacji.
Może zamiast długości nie będzie to błąd ponieważ tak jest zazwyczaj efektywniej.
Mamy 90 sprawdźmy zapytanie.
Widzimy że ponownie jak w przypadku Ball Create mamy bardzo długie zapytanie bardzo
długiego Update który wszystko to co realizowaliśmy
wcześniej po kolei osobno robi nam za jednym razem jeszcze tylko zweryfikuje czy
indeksy faktycznie zaczęło się dodawać odświeżyć.
Zobaczmy co mamy najświeższe mamy
bądź niech będzie w takim razie ma zasilane masło.
Widzimy że indeks został stary.
Ot i widzimy że indeks się zaktualizować.
Opowiem wam o przypadku w którym metoda bank bardzo mi się przydała kiedy
przyspieszyła działanie mojej aplikacji wielokrotnie
to było w momencie jak pisałem aplikacje dla wyników sportowych na biegu.
Chodziło o to że mieliśmy kilkuset
zawodników bądź nawet kilka tysięcy i brakowało któregoś czasu pośrodku.
Dlatego po dodaniu tego czasu trzeba było wszystkie miejsca które były za tym
zawodnikiem dajmy na to że zawodnik którego oddaliśmy był 5 setne.
Kiedy mamy 1000 zawodników to sprawia on że wszystkie miejsca zawodników które były
później zaktualizowany i trzeba było je na nowo poprawić.
I robienie tego w tradycyjny sposób czyli kierowanie po nich i zamiana ich miejsc na
inne za pomocą osobnych zapytań sprawia że aplikacja zaczyna działać dużo wolniej.
Im większy był bieg dlatego bank bardzo fajnie rozwiązał ten problem.