MCP Academy · Lekcja

Czyste zamykanie i zwalnianie zasobów

Zamykaj pule i pliki po zatrzymaniu serwera.

Lekcja 4 z 413 kroki

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. ✅

Bezpłatny start

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

  1. Mechanizm uruchamiania Lifespan
  2. Udostępnianie stanu przez kontekst aplikacji
  3. Uzyskiwanie dostępu do obiektu kontekstu
  4. Czyste zamykanie i zwalnianie zasobów
← Powrót do MCP Academy