474
Rozdział 11
3
/
4
Ostatni przegląd
Czy Twoja aplikacja jest teraz odporna?
Poniżej znajdziesz cztery pytania postawione w
rozdziale 11
.
1
2
3
4
Co się stanie, gdy połączenie z bazą danych zawiedzie?
Czy Twoja aplikacja jest zabezpieczona przed atakami sieciowymi?
Co się stanie, gdy coś będzie długo trwało?
Co się stanie, gdy wywołanie funkcji się nie uda?
Twoja aplikacja obsługuje teraz szereg wyjątków czasu wykonania dzięki zastosowaniu
konstrukcji
try-except
oraz kilku niestandardowym wyjątkom, które możesz zgłaszać
i przechwytywać zgodnie z potrzebą.
Jeśli wiesz, że coś może pójść źle w czasie wykonania, uzbrój swój kod przeciwko wszelkim
wyjątkom, które mogą się zdarzyć. Pozwala to poprawić ogólną odporność aplikacji,
co jest zdecydowanie dobrą rzeczą.
Zauważ, że istnieją jeszcze inne obszary, w których można zwiększyć odporność aplikacji.
Poświęciłeś mnóstwo czasu na dodawanie kodu
try-except
do funkcji
view_the_log
, która
wykorzystywała możliwości zapewniane przez menedżer kontekstu
UseDatabase
. Klasa ta
była używana
również wewnątrz funkcji
log_request
i prawdopodobnie także powinna zostać
odpowiednio zabezpieczona (zadanie to pozostawiamy Ci jako pracę domową).
Twoja aplikacja WWW jest bardziej responsywna dzięki zastosowaniu wątku do
wykonania zadania, które musi być kiedyś w końcu przeprowadzone, lecz niekoniecznie
od razu. To dobra strategia projektowa, ale musisz uważać, aby nie przesadzić z wątkami.
Przykład przedstawiony w tym rozdziale jest bardzo prosty. Bardzo łatwo jednak utworzyć
wykorzystujący wątki kod, którego nikt nie będzie w stanie zrozumieć i który doprowadzi
Cię do szału, gdy będziesz musiał go debugować.
Wątków używaj ostrożnie.
Jeśli chodzi o odpowiedź na pytanie nr 3 — co się stanie, gdy coś będzie długo trwało?
— zastosowanie mechanizmu wątków poprawiło (z perspektywy użytkownika aplikacji)
wydajność zapisu w bazie danych, lecz nie odczytu. Mamy tu do czynienia z przypadkiem,
w którym po prostu trzeba czekać na nadejście danych po odczycie, niezależnie od tego,
ile miałoby to potrwać, ponieważ nasza aplikacja WWW nie jest w stanie dalej działać bez
tych danych.
Aby przyspieszyć operację odczytu (zakładając, że to właśnie ona jest w tym przypadku
w największej mierze odpowiedzialna za spowolnienie), będziesz prawdopodobnie musiał
rozejrzeć się za alternatywnym (szybszym) rozwiązaniem bazodanowym. Jest to jednak
zmartwienie na przyszłość, którym nie będziemy się już przejmować w niniejszej książce.
Mimo to jednak w następnym i ostatnim już rozdziale w istocie będziemy zajmować się
kwestią wydajności, lecz zrobimy to, omawiając temat, który wszyscy doskonale rozumieją
i który przedstawiliśmy już wcześniej, a mianowicie przetwarzanie danych w pętli.
Get Python Rusz głową! Wydanie II now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.