Logo
TGCATALOG
Каталог Подборки Блог
Библиотека питониста: Python Django Flask

Библиотека питониста: Python Django Flask

Все полезное для Python разработчиков: Django, Flask и библиотеки.

Нет оценок
180
10.09.2026
180
10.09.2026
Нет оценок
180
10.09.2026
Безопасный переход через бот
О канале

Все полезное для Python разработчиков: Django, Flask и библиотеки.

Подписчиков 37,433
Тематика IT
Язык Русский
Ссылка t.me/pyproglib
Описание

Комплексный канал для питонистов. Содержит подборки библиотек, гайды по Django и Flask, примеры кода и советы. Все самое нужное в одном месте для эффективной работы и обучения веб-разработке на Python.

Последние посты

Библиотека питониста: Python Django Flask
Библиотека питониста: Python Django Flask
🔒Открыть пост
и посмотреть медиа
➡️ Два бага из-за области видимости в Python — и как их избежать Приложение работает нормально. Открываешь вторую вкладку — данные не те. Тесты проходят по отдельности, но падают вместе. Причина — объект на уровне модуля. Проблема 1: слишком много sharing Типичный паттерн в FastAPI-проектах: # database.py engine = create_engine("sqlite:///database.db") engine создаётся в момент импорта. Все модули, которые импортируют из database.py, используют один и тот же engine, один пул соединений, один файл БД. Тесты чистят базу через setup/teardown, но состояние всё равно утекает: автоинкремент ID, кэш метаданных, внутреннее состояние SQLite. Тест assert id == 1 проходит первым, но падает если запустить после другого теста. Фикс — создавать engine на каждый тест: @pytest.fixture def engine(): engine = create_engine("sqlite://", echo=False) SQLModel.metadata.create_all(engine) yield engine engine.dispose() In-memory БД, никакого shared state, никакой уборки. Проблема 2: слишком мало sharing Обратная ситуация. Зависимость FastAPI создаёт новый экземпляр на каждый запрос: def get_data_source() -> DataSource: return FakeDataSource(...) # новый объект каждый раз Каждая вкладка браузера получает свой FakeDataSource со своим состоянием с нуля. Вкладка А показывает одно, вкладка Б — другое. Никакой общей реальности нет. Фикс — app.state: @asynccontextmanager async def lifespan(app: FastAPI): app.state.data_source = get_data_source() yield def get_data_source(request: Request) -> DataSource: return request.app.state.data_source Один экземпляр на весь процесс, легко подменяется в тестах через dependency_overrides. Правило одной строкой Если объект хранит мутабельное состояние — выбирай его скоуп осознанно. Слишком широкий (модуль) — тесты текут друг в друга. Слишком узкий (каждый запрос) — нет общего состояния. Константы и чистые значения на уровне модуля — ок. Ресурсы (DB engine, HTTP клиент, кэш, пул соединений) — нет. 📍 Навигация: Вакансии • Задачи • Собесы Библиотека питониста #буст
Библиотека питониста: Python Django Flask
Динамика подписчиков
+0.0% за 30 дней
Текущие
37,433
Месяц назад
37,446
Средний рост
+0 / день
Обновлено
19 часов назад

Отзывы о канале Библиотека питониста: Python Django Flask

Авторизуйтесь, чтобы оставить отзыв

Только зарегистрированные пользователи могут делиться своим мнением.

Пока нет отзывов

Станьте первым, кто поделится своим впечатлением об этом ресурсе!

Похожие ресурсы

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

Канал

Официальный канал Pangolin Swap: кросс-чейн платформа с DEX, NFT и майнингом. Актуальные обновления и новости.

Канал

Открытые мысли о DeFi. Активность в булл-маркете, без финансовых советов.

Канал
Переход на светлую тему
Главная Каталог Подборки Блог Вход