Czyste zamykanie i zwalnianie zasobów
Zamykaj pule i pliki po zatrzymaniu serwera.
Czyste zamykanie i zwalnianie zasobów to bezpłatna lekcja MCP Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej MCP Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs MCP Academy zawiera 4 lekcji w sumie.
Dlaczego zamykanie ma znaczenie
Nigdy niezamykane połączenia powodują wycieki zasobów: gromadzą się gniazda, pule pozostają zajęte, a bazy danych nadal są obciążone.
Kod porządkowy znajduje się za yield
Wszystko po yield w lifespan to kod zamykający, wykonywany po otrzymaniu polecenia zatrzymania serwera.
async def lifespan(server):
db = await connect()
yield {"db": db}
await db.close()Zamykaj to, co otwierasz
Najważniejsza zasada: dla każdego zasobu otwartego podczas uruchamiania dodaj odpowiadające mu wywołanie close w kodzie porządkowym, aby nic nie pozostało otwarte.
try / finally gwarantuje wykonanie
Umieść yield w bloku try / finally, aby sprzątanie zostało wykonane nawet wtedy, gdy żądanie zakończy się błędem w trakcie działania.
async def lifespan(server):
db = await connect()
try:
yield {"db": db}
finally:
await db.close()Dokończ trwające operacje
Kontrolowane zatrzymanie pozwala zakończyć trwające wywołania narzędzi przed usunięciem zasobów, zamiast nagle odbierać im potrzebne zależności.
Opróżnij bufory przed zamknięciem
Niektórzy klienci buforują dane, dlatego przed zamknięciem wykonaj flush oczekujących zapisów, aby nie utracić ostatnich wysłanych bajtów.
Zamykaj w odwrotnej kolejności
Zasoby należy usuwać w odwrotnej kolejności do tej, w której zostały utworzone, aby coś nie zostało zamknięte, gdy zależny od tego obiekt nadal działa.
Nie blokuj wyjścia
Zabezpiecz powolne sprzątanie za pomocą limitu czasu, aby zablokowane połączenie nie uniemożliwiło całkowitego zatrzymania serwera.
Idempotentne sprzątanie
Sprzątanie powinno być idempotentne: dwukrotne zamknięcie obiektu powinno być nieszkodliwe, ponieważ zatrzymanie może zostać wywołane więcej niż raz.
Rejestruj przebieg zamykania
Krótki wiersz logu dla każdego zamkniętego zasobu zmienia ciche wyjście w zdarzenie, które można rzeczywiście zdiagnozować, gdy coś pójdzie nie tak.
Menedżery kontekstu zrobią to za Ciebie
Umieszczenie klientów w konstrukcji async with zamyka ich automatycznie, pozwalając Pythonowi obsłużyć zwalnianie zasobów i ograniczyć ilość ręcznego sprzątania.
async def lifespan(server):
async with connect() as db:
yield {"db": db}Szybkie sprawdzenie
Gdzie w lifespan należy umieścić kod zwalniający zasoby?
Podsumowanie: poprawne zamykanie
Zwolnij zasoby po yield, zabezpiecz je za pomocą try/finally, zamykaj w odwrotnej kolejności i unikaj zawieszeń. Serwer uruchamia się i zatrzymuje teraz prawidłowo. ✅
Ucz się Python dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 30
- Lekcje
- 120
Często zadawane pytania
Czy lekcja „Czyste zamykanie i zwalnianie zasobów” jest bezpłatna?
Tak — pełny tekst „Czyste zamykanie i zwalnianie zasobów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu MCP Academy, przejdź na CoddyKit PRO. Kurs MCP Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Czyste zamykanie i zwalnianie zasobów”?
Zamykaj pule i pliki po zatrzymaniu serwera. Ćwiczysz MCP Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć MCP Academy?
Nie wymagamy żadnego doświadczenia. MCP Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Czyste zamykanie i zwalnianie zasobów”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji MCP Academy?
Tak. Każda lekcja MCP Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Mechanizm uruchamiania Lifespan
- Udostępnianie stanu przez kontekst aplikacji
- Uzyskiwanie dostępu do obiektu kontekstu
- Czyste zamykanie i zwalnianie zasobów