Общий контекст приложения
Передавайте общие объекты в каждый обработчик.
«Общий контекст приложения» — бесплатный урок MCP Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения MCP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс MCP Academy содержит 4 уроков всего.
Состояние, необходимое каждому обработчику
Вашим инструментам часто нужны одни и те же объекты, например один пул соединений с базой данных. Вы хотите создать их один раз и использовать повсюду.
Значение, переданное через yield, — это состояние
Всё, что передаёт через yield lifespan, становится общим состоянием приложения, доступным каждому инструменту, ресурсу и шаблону запроса.
async def lifespan(server):
yield {"db": db, "cache": cache}Предпочитайте типизированный контейнер
Обёртка состояния в dataclass предоставляет понятные имена полей и автоматическое дополнение в редакторе вместо необходимости угадывать ключи словаря.
@dataclass
class AppContext:
db: DatabaseСоздавайте состояние при запуске
Внутри lifespan создайте каждый общий объект и передайте контейнер через yield, чтобы он существовал всё время работы сервера.
async def lifespan(server):
db = await Database.connect()
yield AppContext(db=db)Единый источник истины
Общее состояние означает наличие одного источника истины: каждый обработчик видит одно и то же соединение, поэтому Вы избегаете дублирующихся пулов, из которых могут утекать ресурсы.
Не используйте глобальные переменные
Не используйте глобальные переменные уровня модуля для хранения соединений. Передача состояния через контекст упрощает тестирование инструментов и предотвращает скрытую связанность.
Состояние относится к серверу, а не к вызову
Контекст приложения создаётся один раз при запуске, а не заново для каждого запроса, поэтому его объекты сохраняются во время множества вызовов инструментов.
Получайте его через запрос
Обработчики не импортируют состояние напрямую. Во время вызова они получают объект контекста, предоставляющий доступ к переданному через yield значению.
Сочетайте соединения и конфигурацию
Общий контейнер может хранить не только клиентов: поместите в него конфигурацию, например базовые URL API или флаги возможностей, загруженные при запуске.
@dataclass
class AppContext:
db: Database
base_url: strПочти не изменяйте его
Считайте общее состояние в основном доступным только для чтения. Изменение состояния из множества параллельных вызовов приводит к скрытым ошибкам, которые трудно отследить.
Lifespan отвечает за жизненный цикл
Поскольку lifespan создаёт состояние, он также отвечает за его удаление, поэтому создание и очистка остаются в одном аккуратном месте.
Быстрая проверка
Что становится общим состоянием приложения, доступным Вашим обработчикам?
Итоги: общее состояние
Вы один раз создаёте общие объекты в lifespan, передаёте типизированный контейнер через yield и позволяете каждому обработчику читать его. Далее: как получить к нему доступ. 🧩
Изучай Python с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 30
- Уроки
- 120
Часто задаваемые вопросы
Урок «Общий контекст приложения» бесплатный?
Да — полный текст урока «Общий контекст приложения» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс MCP Academy, подпишись на CoddyKit PRO. Курс MCP Academy содержит 4 уроков всего.
Чему я научусь в уроке «Общий контекст приложения»?
Передавайте общие объекты в каждый обработчик. Ты практикуешь MCP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать MCP Academy?
Предыдущий опыт не требуется. MCP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Общий контекст приложения»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке MCP Academy?
Да. Каждый урок MCP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Обработчик запуска с учётом времени жизни
- Общий контекст приложения
- Доступ к объекту контекста
- Корректное завершение работы и освобождение ресурсов