Русский
Открыть в Telegram

Пост ✈️В FastAPI есть мощный инструмент для управления ресурсами приложения – @ asynccontextmanager в связке с lifespan. Это …

2 августа 2025
P
Pythoner
Фотография
✈️В FastAPI есть мощный инструмент для управления ресурсами приложения – @ asynccontextmanager в связке с lifespan. Это позволяет выполнить код инициализации при запуске и очистки при завершении приложения. ➡️Зачем это нужно? - Подготовка базы данных: Создание таблиц, миграции. - Инициализация соединений: Подключение к Redis, Kafka. - Очистка ресурсов: Закрытие соединений, удаление временных файлов. ➡️Как это работает? Декоратор @ asynccontextmanager создает асинхронный контекстный менеджер. Функция lifespan определяет, какой код выполняется до и после запуска приложения. ➡️Пример: from contextlib import asynccontextmanager from fastapi import FastAPI # (Предположим, у вас есть функции create_db и close_db) async def create_db():     print("Подключаемся к базе данных...")     # Здесь будет код подключения к БД     await asyncio.sleep(1) # Имитация асинхронной операции     print("База данных подключена!") async def close_db():     print("Закрываем соединение с базой данных...")     # Здесь будет код закрытия соединения с БД     await asyncio.sleep(1) # Имитация асинхронной операции     print("Соединение с базой данных закрыто!") @asynccontextmanager async def lifespan(app: FastAPI):     print("Запуск приложения...")     await create_db()     yield     print("Завершение приложения...")     await close_db() app = FastAPI(lifespan=lifespan) @app.get("/") async def root():     return {"message": "Hello World"} # Запуск: uvicorn main:app --reload - При запуске FastAPI (uvicorn main:app --reload) выполнится код до yield (создание таблиц). - При остановке FastAPI выполнится код после yield (удаление таблиц). lifespan + @ asynccontextmanager - это чистый и эффективный способ управлять ресурсами вашего FastAPI приложения! 🐍 Pythoner
15 · 1.7K ·

Рядом в ленте

PPythonerОпросPPythoner🤔Разбор sorted("Python") → ['P', 'h', 'n', 'o', 't', 'y']. [::-1] переворачивает список → ['y', 't', 'o', 'n', 'h', 'P']. [0] возвращает первый элемент → "y". 🐍
это сообщение
PPythoner➡️В Python is проверяет, один ли это объект в памяти, а не равны ли значения: a = 1000 b = 1000 print(a is b) # False Даже если a == b, a is b может вернуть FalPPythoner✈️Dict comprehension – это удобный способ создания словарей в одну строку, используя генераторы. Он позволяет преобразовывать данные компактно и эффективно. ➡️О

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем