Обработчик запуска с учётом времени жизни
Открывайте соединения один раз при запуске сервера.
«Обработчик запуска с учётом времени жизни» — бесплатный урок MCP Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения MCP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс MCP Academy содержит 4 уроков всего.
Запустите один раз, используйте много раз
Некоторые действия по настройке следует выполнять один раз при запуске сервера, например открывать соединение с базой данных, а не при каждом вызове инструмента. 🚀
Познакомьтесь с lifespan
lifespan — это хук, который выполняет код запуска до поступления запросов, а затем код освобождения ресурсов после остановки сервера.
Асинхронный менеджер контекста
lifespan — это асинхронный менеджер контекста: код до yield выполняется при запуске, а код после yield — при завершении работы.
from contextlib import asynccontextmanager
@asynccontextmanager
async def lifespan(server):
# startup
yield
# shutdownПодключите его к FastMCP
Передайте lifespan серверу в аргументе lifespan, чтобы FastMCP выполнял его на протяжении всего времени работы сервера.
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("demo", lifespan=lifespan)Открывайте здесь ресурсоёмкие компоненты
Блок запуска — подходящее место для ресурсоёмкой настройки: пулов соединений с базой данных, HTTP-клиентов или загрузки модели в память.
Передайте общее состояние через yield
Всё, что Вы передаёте через yield, становится общим контекстом для каждого запроса, поэтому создайте это один раз и передавайте дальше.
async def lifespan(server):
db = await connect_db()
yield {"db": db}Запуск выполняется до любого инструмента
FastMCP гарантирует, что Ваш код запуска завершится до принятия первого вызова инструмента, поэтому ресурсы будут готовы вовремя.
Типизированный контекст — по желанию
Вместо словаря можно передать небольшой dataclass, чтобы получить типизированный доступ к общим объектам с автоматическим дополнением.
from dataclasses import dataclass
@dataclass
class AppCtx:
db: objectСохраняйте быстрый запуск
Клиенты ждут завершения запуска, поэтому сделайте его минимальным: подключите необходимое, а медленные необязательные действия отложите до первого использования.
Один lifespan на сервер
У сервера ровно один lifespan. Соберите в нём всю логику запуска, а не распределяйте настройку по инструментам.
Обрабатывайте сбои запуска
Если при запуске возникает ошибка, сервер должен отказаться запускаться, а не работать с неполной конфигурацией и не завершаться непонятным образом позже.
Быстрая проверка
Где относительно yield размещается код запуска в lifespan?
Итоги: хук lifespan
Вы изучили lifespan — асинхронный менеджер контекста, который выполняет настройку до yield, передаёт общее состояние через yield и освобождает ресурсы после него. Далее: передача этого состояния. 🎯
Изучай Python с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 30
- Уроки
- 120
Часто задаваемые вопросы
Урок «Обработчик запуска с учётом времени жизни» бесплатный?
Да — полный текст урока «Обработчик запуска с учётом времени жизни» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс MCP Academy, подпишись на CoddyKit PRO. Курс MCP Academy содержит 4 уроков всего.
Чему я научусь в уроке «Обработчик запуска с учётом времени жизни»?
Открывайте соединения один раз при запуске сервера. Ты практикуешь MCP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать MCP Academy?
Предыдущий опыт не требуется. MCP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Обработчик запуска с учётом времени жизни»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке MCP Academy?
Да. Каждый урок MCP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Обработчик запуска с учётом времени жизни
- Общий контекст приложения
- Доступ к объекту контекста
- Корректное завершение работы и освобождение ресурсов