420
Rozdział 11.
Więcej problemów
Operacje wejścia-wyjścia (czasami) powolne
W tej chwili nasza aplikacja WWW komunikuje się z bazą danych działającą po stronie backendu
niemal natychmiastowo, dzięki czemu jej użytkownicy obserwują bardzo niewielkie opóźnienia
wynikające z interakcji zachodzących pomiędzy aplikacją a bazą lub wręcz nie ma takich opóźnień.
Wyobraź sobie jednak sytuację, w której komunikacja z bazą danych wymaga pewnego czasu, być może
liczonego nawet w sekundach.
3
Komunikacja z bazą danych działającą po stronie backendu może wymagać czasu. W gruncie
rzeczy zawsze, gdy zachodzi jakaś interakcja pomiędzy Twoim kodem a czymś, co jest wobec niego
zewnętrzne (na przykład: plikiem, bazą danych, siecią czy jakimkolwiek innym zasobem tego rodzaju),
interakcja ta może wymagać dowolnie długiego czasu, na którego ilość zwykle nie masz żadnego
wpływu. Mimo tego braku kontroli musisz być świadomy, że niektóre operacje mogą trwać długo.
Aby zademonstrować ten problem, dodajmy do naszej aplikacji WWW
sztuczne opóźnienie
(korzystając w tym celu z funkcji
sleep
, która jest częścią składową modułu
time
należącego do
biblioteki standardowej). Dodaj przedstawiony poniżej wiersz na samym początku kodu Twojej
aplikacji WWW (w okolicach innych instrukcji
import
).
Co się stanie, gdy coś będzie trwało zbyt długo?
Być może baza danych pracująca po stronie backendu znajduje się na innej maszynie,
w innym budynku lub nawet na innym kontynencie... Co się wtedy stanie?
Gdy klikniesz przycisk Zrób to!,
Twoja przeglądarka internetowa
będzie czekać... i czekać...
i czekać... i czekać...
from time import sleep
sleep(15)
Po wstawieniu tej instrukcji przejdź do edycji funkcji
log_request
i umieść w niej pokazany
poniżej wiersz kodu tuż przed instrukcją
with
.
Gdy zrestartujesz swoją aplikację WWW, a następnie rozpoczniesz wyszukiwanie, zaobserwujesz
znaczące opóźnienie związane z tym, że przeglądarka internetowa będzie oczekiwała na
odpowiedź od Twojej aplikacji. W porównaniu z opóźnieniami spotykanymi we współczesnych
sieciach 15 sekund będzie się wydawało całą wiecznością, co prawdopodobnie spowoduje,
że użytkownicy Twojej aplikacji WWW pomyślą, uległa ona
awarii.

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.