0Pricing
MCP Academy · Урок

Корректное завершение работы и освобождение ресурсов

Закрывайте пулы соединений и файлы при остановке сервера.

«Корректное завершение работы и освобождение ресурсов» — бесплатный урок MCP Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения MCP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс MCP Academy содержит 4 уроков всего.

Почему завершение работы важно

Открытые соединения, которые никогда не закрываются, приводят к утечке ресурсов: сокеты накапливаются, пулы остаются занятыми, а базы данных продолжают работать.

Освобождение ресурсов выполняется после yield

Всё после yield в lifespan — это код завершения работы, который выполняется, когда серверу дают команду остановиться.

async def lifespan(server):
    db = await connect()
    yield {"db": db}
    await db.close()

Закрывайте открытые ресурсы

Золотое правило: для каждого ресурса, открытого при запуске, добавляйте соответствующий вызов close при завершении, чтобы ничего не оставалось незакрытым.

try / finally гарантирует выполнение

Оберните yield в try / finally, чтобы очистка всё равно выполнялась, даже если запрос аварийно завершится в процессе.

async def lifespan(server):
    db = await connect()
    try:
        yield {"db": db}
    finally:
        await db.close()

Завершайте выполняющуюся работу

Корректная остановка позволяет текущим вызовам инструментов завершиться до освобождения ресурсов, вместо того чтобы внезапно лишать их необходимой основы.

Сначала сбрасывайте буферы, затем закрывайте

Некоторые клиенты буферизуют данные, поэтому перед закрытием выполните flush для ожидающих записей, чтобы не потерять последние отправленные байты.

Закрывайте в обратном порядке

Освобождайте ресурсы в порядке, обратном их созданию, чтобы объект не закрывался, пока зависимый от него объект ещё работает.

Не зависайте при выходе

Ограничьте медленную очистку с помощью тайм-аута, чтобы зависшее соединение не могло навсегда заблокировать остановку всего сервера.

Идемпотентная очистка

Сделайте завершение работы идемпотентным: повторное закрытие объекта должно быть безопасным, поскольку завершение работы может быть запущено несколько раз.

Записывайте путь завершения работы в журнал

Короткая строка журнала для каждого закрытого ресурса превращает незаметный выход из программы в событие, которое можно отладить при возникновении проблем.

Менеджеры контекста сделают это за Вас

Обернув клиентов в async with, Вы автоматически закрываете их и позволяете Python управлять освобождением ресурсов, сокращая объём ручной очистки.

async def lifespan(server):
    async with connect() as db:
        yield {"db": db}

Быстрая проверка

Где в lifespan размещается код освобождения ресурсов?

Итоги: корректное завершение работы

Вы освобождаете ресурсы после yield, защищаете этот участок с помощью try/finally, закрываете ресурсы в обратном порядке и не допускаете зависаний. Теперь сервер корректно запускается и останавливается. ✅

Часто задаваемые вопросы

Урок «Корректное завершение работы и освобождение ресурсов» бесплатный?

Да — полный текст урока «Корректное завершение работы и освобождение ресурсов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс MCP Academy, подпишись на CoddyKit PRO. Курс MCP Academy содержит 4 уроков всего.

Чему я научусь в уроке «Корректное завершение работы и освобождение ресурсов»?

Закрывайте пулы соединений и файлы при остановке сервера. Ты практикуешь MCP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать MCP Academy?

Предыдущий опыт не требуется. MCP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Корректное завершение работы и освобождение ресурсов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке MCP Academy?

Да. Каждый урок MCP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Обработчик запуска с учётом времени жизни
  2. Общий контекст приложения
  3. Доступ к объекту контекста
  4. Корректное завершение работы и освобождение ресурсов
← Назад к MCP Academy