Forwarded from Python/ django
🔥 10 Python-библиотек, которые должен знать каждый разработчик LLM и GenAI
1️⃣ [LangChain](https://www.langchain.com/)
Фреймворк для создания LLM-приложений, агентов и инструментов.
Позволяет соединять языковые модели с базами данных, API и внешними сервисами.
Идеален для построения RAG-систем, чат-ботов и аналитических ассистентов.
2️⃣ [LangGraph](https://github.com/langchain-ai/langgraph)
Надстройка над LangChain для создания сложных многоагентных систем.
Поддерживает условную логику, ветвления и сохранение состояния.
Используется для разработки автономных агентов, которые сотрудничают и планируют задачи.
3️⃣ [Docling](https://github.com/DS4SD/docling)
Инструмент для анализа и извлечения информации из документов.
Объединяет LLM, LangChain и RAG-подход для “умного” чтения PDF, таблиц и сканов.
Подходит для систем документооборота, юридических и научных данных.
4️⃣ [OpenAI Python SDK](https://github.com/openai/openai-python)
Официальная библиотека для работы с моделями GPT-4o, DALL-E, Whisper и другими API OpenAI.
Позволяет вызывать модели, генерировать текст, изображения и транскрибировать аудио в несколько строк кода.
Главный инструмент для интеграции мощных моделей в свои Python-приложения.
5️⃣ [Markitdown (Microsoft)](https://github.com/microsoft/markitdown)
Библиотека от Microsoft для создания интерфейсов LLM-приложений с использованием Markdown.
Позволяет описывать UI и рабочие процессы прямо в тексте — быстро, удобно и без JavaScript.
Полезна для автоматизации LLM-воркфлоу и простых чат-интерфейсов.
6️⃣ [Streamlit](https://streamlit.io/)
Фреймворк для построения интерактивных AI-дашбордов и веб-приложений.
Позволяет визуализировать результаты модели, строить формы ввода, графики и интерактивные элементы.
Отличный выбор для быстрой демонстрации или внутреннего прототипа GenAI-проекта.
7️⃣ [FastAPI](https://fastapi.tiangolo.com/)
Высокопроизводительный фреймворк для создания REST и WebSocket API.
Идеален для деплоя ML и LLM моделей в продакшене.
Быстрый, типизированный и легко масштабируемый — стандарт де-факто в AI-бэкендах.
8️⃣ [Faiss](https://github.com/facebookresearch/faiss)
Библиотека для векторного поиска и кластеризации эмбеддингов.
Молниеносно ищет похожие тексты, изображения или документы в огромных наборах данных.
Необходима в RAG-системах, рекомендациях и семантическом поиске.
9️⃣ [SentenceTransformers](https://www.sbert.net/)
Набор моделей для генерации эмбеддингов предложений, текстов и документов.
Даёт качественные векторные представления для поиска, кластеризации и анализа смысловой близости.
Отлично работает вместе с Faiss и LangChain.
🔟 [MLflow](https://mlflow.org/)
Инструмент для трекинга экспериментов, управления моделями и деплоя ML-проектов.
Позволяет отслеживать метрики, сравнивать версии и хранить модели в централизованном реестре.
Незаменим при построении воспроизводимого и управляемого MLOps-процесса.
⚙️ Эти библиотеки формируют единый стек для создания LLM-агентов, RAG-систем, аналитических ассистентов и AI-сервисов — от эксперимента до продакшена.
@pythonl
1️⃣ [LangChain](https://www.langchain.com/)
Фреймворк для создания LLM-приложений, агентов и инструментов.
Позволяет соединять языковые модели с базами данных, API и внешними сервисами.
Идеален для построения RAG-систем, чат-ботов и аналитических ассистентов.
2️⃣ [LangGraph](https://github.com/langchain-ai/langgraph)
Надстройка над LangChain для создания сложных многоагентных систем.
Поддерживает условную логику, ветвления и сохранение состояния.
Используется для разработки автономных агентов, которые сотрудничают и планируют задачи.
3️⃣ [Docling](https://github.com/DS4SD/docling)
Инструмент для анализа и извлечения информации из документов.
Объединяет LLM, LangChain и RAG-подход для “умного” чтения PDF, таблиц и сканов.
Подходит для систем документооборота, юридических и научных данных.
4️⃣ [OpenAI Python SDK](https://github.com/openai/openai-python)
Официальная библиотека для работы с моделями GPT-4o, DALL-E, Whisper и другими API OpenAI.
Позволяет вызывать модели, генерировать текст, изображения и транскрибировать аудио в несколько строк кода.
Главный инструмент для интеграции мощных моделей в свои Python-приложения.
5️⃣ [Markitdown (Microsoft)](https://github.com/microsoft/markitdown)
Библиотека от Microsoft для создания интерфейсов LLM-приложений с использованием Markdown.
Позволяет описывать UI и рабочие процессы прямо в тексте — быстро, удобно и без JavaScript.
Полезна для автоматизации LLM-воркфлоу и простых чат-интерфейсов.
6️⃣ [Streamlit](https://streamlit.io/)
Фреймворк для построения интерактивных AI-дашбордов и веб-приложений.
Позволяет визуализировать результаты модели, строить формы ввода, графики и интерактивные элементы.
Отличный выбор для быстрой демонстрации или внутреннего прототипа GenAI-проекта.
7️⃣ [FastAPI](https://fastapi.tiangolo.com/)
Высокопроизводительный фреймворк для создания REST и WebSocket API.
Идеален для деплоя ML и LLM моделей в продакшене.
Быстрый, типизированный и легко масштабируемый — стандарт де-факто в AI-бэкендах.
8️⃣ [Faiss](https://github.com/facebookresearch/faiss)
Библиотека для векторного поиска и кластеризации эмбеддингов.
Молниеносно ищет похожие тексты, изображения или документы в огромных наборах данных.
Необходима в RAG-системах, рекомендациях и семантическом поиске.
9️⃣ [SentenceTransformers](https://www.sbert.net/)
Набор моделей для генерации эмбеддингов предложений, текстов и документов.
Даёт качественные векторные представления для поиска, кластеризации и анализа смысловой близости.
Отлично работает вместе с Faiss и LangChain.
🔟 [MLflow](https://mlflow.org/)
Инструмент для трекинга экспериментов, управления моделями и деплоя ML-проектов.
Позволяет отслеживать метрики, сравнивать версии и хранить модели в централизованном реестре.
Незаменим при построении воспроизводимого и управляемого MLOps-процесса.
⚙️ Эти библиотеки формируют единый стек для создания LLM-агентов, RAG-систем, аналитических ассистентов и AI-сервисов — от эксперимента до продакшена.
@pythonl
Forwarded from Python/ django
Эмма Смит и Кирилл Подопригора из core-team Python опубликовали предварительное предложение (Pre-PEP), в котором описывается план постепенного внедрения Rust в кодовую базу CPython.
На первом этапе Rust хотят использовать для необязательных модулей стандартной библиотеки, находящихся в каталоге Modules/.
Дальше — больше: если эксперимент окажется успешным, то к выходу Python 3.17 Rust может стать обязательной сборочной зависимостью. Это позволит улучшить безопасность, производительность и надёжность низкоуровневых частей интерпретатора.
Подробнее: https://peps.python.org/pep-0011/
@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Python/ django
Олег Шелест - профессионал по информационной безопасности, раскрывает скрытые механики Linux, с помощью наглядных картинок и коротких, максимально понятных разборов у себя в тг канале.
- Без воды.
- Без лишней теории.
Только практические приёмы, которые реально используют профи.
Если хочешь уверенно владеть Bash - здесь ты получишь всё, что нужно: t.me/bashmastter
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from DevOps Docker
В основе - python:3.11-slim, установка только нужных пакетов, удаление apt-кэша, отдельный системный пользователь без root-прав, изоляция рабочего каталога и установка зависимостей под ненадёжным пользователем.
Такой контейнер легче, безопаснее и запускается быстрее.
Отличная база для продакшена.
Переход на non-root пользователя резко снижает возможный ущерб, ограничивает доступ к файлам и заставляет держать порядок с правами и владением.
Docker - все о Docker и Devops
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Python/ django
Настройка
git config --global user.name "Name" — задать имя git config --global user.email "email" — задать почту git config --list — показать настройки Старт
git init — создать репозиторий git clone url — клонировать репо Стейджинг и коммиты
git status — статус git add . — добавить все изменения git reset file — убрать из стейджа git commit -m "msg" — коммит git commit --amend — исправить последний коммит Ветки
git branch — список git branch name — создать git checkout -b name — создать и перейти git branch -d name — удалить Merge и Rebase
git merge branch — слить ветку git merge --abort — отменить git rebase branch — перебазирование История
git log --oneline — компактная история git log --graph --all — граф git diff — показать изменения Откат
git restore file — вернуть файл git reset --soft HEAD~1 — откатить коммит, сохранить изменения git reset --hard HEAD~1 — откатить и удалить изменения git clean -f — удалить лишние файлы Удалённые репозитории
git remote -v — список git push origin branch — запушить git pull — получить изменения git fetch — только забрать Теги
git tag — список git tag name — создать git push origin --tags — отправить теги Stash
git stash — сохранить изменения git stash list — список git stash apply — применить Поиск и анализ
git blame file — кто менял строки git grep "text" — поиск git bisect — бинарный поиск бага Продвинутое
git cherry-pick commit — взять коммит git revert commit — отменить коммит через новый git submodule add url — добавить сабмодуль Полезно сохранить под рукой.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Python/ django
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 PYTHON В DOCKER: УСКОРЯЕМ СБОРКУ!
Если ваш Python-приложение в Docker работает медленно при старте или «греет» CPU, проблема часто в том, что Docker пересобирает зависимости каждый раз.
Хитрый приём: замораживайте зависимости в отдельный слой и используйте .dockerignore, чтобы локальные файлы не ломали кеш.
Так Docker перестаёт пересобирать pip-пакеты и старт проекта ускоряется в разы.
Если ваш Python-приложение в Docker работает медленно при старте или «греет» CPU, проблема часто в том, что Docker пересобирает зависимости каждый раз.
Хитрый приём: замораживайте зависимости в отдельный слой и используйте .dockerignore, чтобы локальные файлы не ломали кеш.
Так Docker перестаёт пересобирать pip-пакеты и старт проекта ускоряется в разы.
для оптимизации Python-сборки
FROM python:3.12-slim
WORKDIR /app
Слой с зависимостями (кешируется!)
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
Теперь копируем код (не ломает кеш pip)
COPY . .
CMD ["python", "main.py"]
Forwarded from Python/ django
Вышел Django 6.0, и это одно из самых насыщенных обновлений за последнее время. Релиз добавляет функциональность, которую разработчики долго закрывали сторонними библиотеками или кастомными решениями.
Что нового и действительно важно:
Поддержка template partials из коробки
Теперь Django умеет частичные шаблоны на уровне фреймворка. Это упрощает структуру HTML, повышает переиспользуемость и делает шаблоны чище и понятнее без лишних include-хаков.
Нативный фреймворк для фоновых задач
В Django появился встроенный механизм для background tasks. Для многих проектов это означает, что Celery или RQ больше не обязательны для базовых задач — отложенные и асинхронные операции можно реализовать стандартными средствами.
Встроенная система Content Security Policy (CSP)
Django 6.0 получил полноценную поддержку CSP. Это серьёзный шаг в сторону безопасности по умолчанию и защита от XSS и других атак без внешних middleware.
Современный email API с нормальной Unicode-поддержкой
Работа с email стала более предсказуемой и дружелюбной к Unicode, что особенно важно для международных проектов и сложных шаблонов писем.
Жизненный цикл версий
Django 5.2 больше не имеет mainstream-поддержки. Разработчикам рекомендуется переходить на 6.0, чтобы получать новые возможности, обновления безопасности и улучшения платформы.
Django продолжает двигаться в сторону
«batteries included», но делает это аккуратно и прагматично. Django 6.0 снижает зависимость от внешних библиотек, усиливает безопасность и делает повседневную разработку заметно удобнее.Это релиз, который стоит внимательно изучить и запланировать апгрейд.
https://www.djangoproject.com/weblog/2025/dec/03/django-60-released/
@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Python/ django
This media is not supported in your browser
VIEW IN TELEGRAM
💀➡️ Большинство кодеров не знают про это ускорение в Python
Одна из самых недооценённых оптимизаций в Python — вынесение повторяющихся вычислений в локальные переменные.
Причина проста: доступ к локальной переменной в CPython *в 2–3 раза быстрее*, чем к глобальной или атрибуту модуля.
Особенно важно в циклах и горячих участках кода.
Одна из самых недооценённых оптимизаций в Python — вынесение повторяющихся вычислений в локальные переменные.
Причина проста: доступ к локальной переменной в CPython *в 2–3 раза быстрее*, чем к глобальной или атрибуту модуля.
Особенно важно в циклах и горячих участках кода.
import math
# Медленнее: math.sqrt вызывается через глобальное пространство имён
def slow(nums):
return [math.sqrt(x) for x in nums]
# Быстрее: ссылка на функцию закэширована в локальной переменной
def fast(nums):
sqrt = math.sqrt
return [sqrt(x) for x in nums]
# Ещё пример: длину списка лучше сохранить локально
def sum_fast(nums):
total = 0
ln = len(nums) # локальная ссылка быстрее
for i in range(ln):
total += nums[i]
return total
Forwarded from Python/ django
This media is not supported in your browser
VIEW IN TELEGRAM
🤯💣 PYTHON ТРЮК ПО УСКОРЕНИЮ #python
Совет по Python: если в цикле много обращений к атрибутам объекта или модуля — вынеси их в локальную переменную.
Доступ к локалам работает быстрее, чем к атрибутам, поэтому такой приём иногда ускоряет код на 20–50 процентов.
Совет по Python: если в цикле много обращений к атрибутам объекта или модуля — вынеси их в локальную переменную.
Доступ к локалам работает быстрее, чем к атрибутам, поэтому такой приём иногда ускоряет код на 20–50 процентов.
#медленно — каждый проход лезет в атрибут
for i in range(10_000_000):
x = obj.value
#быстрее — сохрани ссылку заранее
val = obj.value
for i in range(10_000_000):
x = val
#ещё пример — кешируем функцию
import math
sqrt = math.sqrt
for i in range(1_000_000):
r = sqrt(i)
Forwarded from Python/ django
📌 Подробная шпаргалка по командам Docker
Удобный и практичный референс для повседневной работы с Docker: образы, контейнеры, сети, тома и Docker Compose.
🐋 Общие команды Docker
-
-
-
-
📦 Работа с образами
-
-
-
-
-
-
-
🚀 Контейнеры: запуск и управление
-
-
-
-
-
-
-
-
-
-
-
-
-
🧹 Очистка и обслуживание
-
-
-
-
-
-
-
📊 Мониторинг и отладка
-
-
-
🌐 Сети Docker
-
-
-
-
💾 Docker Volumes
-
-
-
-
⚙️ Docker Compose
-
-
-
-
-
-
-
-
🧠 Полезные советы
- Используй
- Проверяй размер Docker-данных через
- Для отладки всегда полезен
- Регулярно чисти систему, чтобы Docker не съел весь диск
Эта шпаргалка закрывает 90% повседневных задач при работе с Docker - от локальной разработки до продакшена.
@pythonl
Удобный и практичный референс для повседневной работы с Docker: образы, контейнеры, сети, тома и Docker Compose.
🐋 Общие команды Docker
-
docker --version — версия Docker-
docker info — информация о системе Docker-
docker help — список доступных команд-
docker <command> --help — помощь по конкретной команде📦 Работа с образами
-
docker pull <image> — скачать образ из реестра-
docker images — список локальных образов-
docker build -t name:tag . — собрать образ из Dockerfile-
docker tag <image> <repo>:<tag> — назначить тег образу-
docker rmi <image> — удалить образ-
docker image prune — удалить неиспользуемые образы-
docker image prune -a — удалить все неиспользуемые, включая невисячие🚀 Контейнеры: запуск и управление
-
docker run <image> — запустить контейнер-
docker run -d <image> — запуск в фоне-
docker run -it <image> bash — интерактивный режим-
docker ps — активные контейнеры-
docker ps -a — все контейнеры-
docker stop <container> — остановить контейнер-
docker start <container> — запустить остановленный-
docker restart <container> — перезапуск-
docker rm <container> — удалить контейнер-
docker rm -f <container> — принудительно удалить-
docker logs <container> — логи контейнера-
docker exec -it <container> bash — войти внутрь контейнера-
docker inspect <container> — подробная информация (JSON)🧹 Очистка и обслуживание
-
docker container prune — удалить все остановленные контейнеры-
docker image prune — удалить неиспользуемые образы-
docker volume prune — удалить неиспользуемые тома-
docker network prune — удалить неиспользуемые сети-
docker system prune — очистить всё неиспользуемое-
docker system prune -a — максимально агрессивная очистка-
docker system df — использование диска Docker’ом📊 Мониторинг и отладка
-
docker stats — использование CPU и памяти контейнерами-
docker top <container> — процессы внутри контейнера-
docker diff <container> — изменения файловой системы контейнера🌐 Сети Docker
-
docker network ls — список сетей-
docker network inspect <network> — информация о сети-
docker network create <name> — создать сеть-
docker network rm <name> — удалить сеть💾 Docker Volumes
-
docker volume ls — список томов-
docker volume inspect <volume> — информация о томе-
docker volume create <name> — создать том-
docker volume rm <name> — удалить том⚙️ Docker Compose
-
docker compose up — запустить сервисы-
docker compose up -d — запуск в фоне-
docker compose down — остановить и удалить всё-
docker compose build — пересобрать образы-
docker compose pull — скачать образы-
docker compose logs — логи всех сервисов-
docker compose ps — статус сервисов-
docker compose restart — перезапуск🧠 Полезные советы
- Используй
--rm, чтобы контейнер удалялся после выполнения- Проверяй размер Docker-данных через
docker system df- Для отладки всегда полезен
docker inspect- Регулярно чисти систему, чтобы Docker не съел весь диск
Эта шпаргалка закрывает 90% повседневных задач при работе с Docker - от локальной разработки до продакшена.
@pythonl
Forwarded from Python/ django
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ Дарио Амодеи: софт скоро может стать «почти бесплатным»
CEO Anthropic Дарио Амодеи предупреждает: мы быстро идём к миру, где создание софта становится настолько дешёвым, что будет ощущаться почти бесплатным.
Из-за этого может исчезнуть старая логика рынка:
раньше приложения делали “в массовую дистрибуцию”, чтобы окупить разработку.
А дальше этот принцип может перестать работать.
Возможный сценарий будущего:
- приложения и функции будут генерироваться под конкретный запрос,
- даже для простых задач “на один раз”,
- без долгой разработки, команды и релизных циклов.
Но у этого есть обратная сторона:
карьеры, построенные на традиционной разработке, могут полностью исчезнуть.
По мнению Амодеи, адаптироваться можно, но проблема в том, что многие ещё не понимают масштаб изменения, которое уже началось.
@pythonl
CEO Anthropic Дарио Амодеи предупреждает: мы быстро идём к миру, где создание софта становится настолько дешёвым, что будет ощущаться почти бесплатным.
Из-за этого может исчезнуть старая логика рынка:
раньше приложения делали “в массовую дистрибуцию”, чтобы окупить разработку.
А дальше этот принцип может перестать работать.
Возможный сценарий будущего:
- приложения и функции будут генерироваться под конкретный запрос,
- даже для простых задач “на один раз”,
- без долгой разработки, команды и релизных циклов.
Но у этого есть обратная сторона:
карьеры, построенные на традиционной разработке, могут полностью исчезнуть.
По мнению Амодеи, адаптироваться можно, но проблема в том, что многие ещё не понимают масштаб изменения, которое уже началось.
@pythonl
Forwarded from Python/ django
🤖 Автоматизация исследований с NotebookLM
Notebooklm-py — это неофициальная библиотека для работы с Google NotebookLM, позволяющая автоматизировать исследовательские процессы, генерировать контент и интегрировать AI-агентов. Подходит для прототипов и личных проектов, используя Python или командную строку.
🚀Основные моменты:
- Интеграция с AI-агентами и Claude Code
- Автоматизация исследований с импортом источников
- Генерация подкастов, видео и учебных материалов
- Поддержка работы через Python API и CLI
- Использование с неофициальными Google API
📌 GitHub: https://github.com/teng-lin/notebooklm-py
Notebooklm-py — это неофициальная библиотека для работы с Google NotebookLM, позволяющая автоматизировать исследовательские процессы, генерировать контент и интегрировать AI-агентов. Подходит для прототипов и личных проектов, используя Python или командную строку.
🚀Основные моменты:
- Интеграция с AI-агентами и Claude Code
- Автоматизация исследований с импортом источников
- Генерация подкастов, видео и учебных материалов
- Поддержка работы через Python API и CLI
- Использование с неофициальными Google API
📌 GitHub: https://github.com/teng-lin/notebooklm-py
Forwarded from Python/ django
🐍 Самая крутая фича Python 3.14 - `sys.remote_exec()` (объясняю по-человечески)
Идея простая:
✅ у тебя уже запущено Python-приложение (например FastAPI в Docker/K8s)
✅ оно уже дошло до нужного состояния (в памяти есть переменные, сессии, кеши)
❌ но тебе нужно посмотреть “что внутри” или поставить дебаггер
Раньше ты делал так:
- добавлял debugpy в код
- перезапускал приложение
- заново воспроизводил баг
Python 3.14 даёт новый чит-код:
То есть буквально “вколоть” скрипт в живой процесс.
Это как:
🔹 зайти внутрь процесса
🔹 выполнить
🔹 или даже подключить дебаггер
без рестарта вообще.
Пример: что можно сделать через sys.remote_exec()
Допустим у нас есть работающий процесс Python.
1) Мы хотим “добавить” туда код:
- вывести PID
- посмотреть глобальные переменные
- записать лог
- даже поменять значение переменной
Пример 2: инжектим debugpy (дебаг без рестарта)
Самая хайповая штука - можно подключить debugpy в уже живое приложение.
То есть приложение уже крутится, у него есть состояние, и ты просто включаешь “прослушку” дебаггера на порту.
Дальше:
- ты делаешь port-forward (если Docker/K8s)
- подключаешь VS Code / PyCharm / nvim к localhost:5679
- ставишь breakpoints и дебажишь как обычно
Что важно
1) Это не “удалённое выполнение” как ssh.
Это прям “внутри процесса” - доступ к памяти, переменным, импортам.
2) Это опасно для продакшена.
Требует прав уровня
3) Это может стать стандартом для отладки контейнеров:
- баг воспроизводится только в k8s
- рестарт = баг пропал
- а тут просто подключился и посмотрел
📌 Статья на эту тему
@pythonl
Идея простая:
✅ у тебя уже запущено Python-приложение (например FastAPI в Docker/K8s)
✅ оно уже дошло до нужного состояния (в памяти есть переменные, сессии, кеши)
❌ но тебе нужно посмотреть “что внутри” или поставить дебаггер
Раньше ты делал так:
- добавлял debugpy в код
- перезапускал приложение
- заново воспроизводил баг
Python 3.14 даёт новый чит-код:
sys.remote_exec() позволяет выполнить кусок Python-кода ВНУТРИ уже работающего Python-процесса.То есть буквально “вколоть” скрипт в живой процесс.
Это как:
🔹 зайти внутрь процесса
🔹 выполнить
print(), импорт, запись переменных🔹 или даже подключить дебаггер
без рестарта вообще.
Пример: что можно сделать через sys.remote_exec()
Допустим у нас есть работающий процесс Python.
1) Мы хотим “добавить” туда код:
- вывести PID
- посмотреть глобальные переменные
- записать лог
- даже поменять значение переменной
# Этот код выполняется СНАРУЖИ и запускает инжект внутрь процесса
import sys
target_pid = 12345 # PID запущенного Python процесса
payload = r"""
import os
import time
print("✅ Injected into running process!")
print("PID:", os.getpid())
print("Time:", time.time())
# Пример: читаем что есть в глобальном пространстве
g = globals()
print("Globals keys sample:", list(g.keys())[:10])
# Пример: создаём переменную прямо в процессе
INJECTED_FLAG = True
"""
# Новое API Python 3.14
sys.remote_exec(target_pid, payload)
Пример 2: инжектим debugpy (дебаг без рестарта)
Самая хайповая штука - можно подключить debugpy в уже живое приложение.
То есть приложение уже крутится, у него есть состояние, и ты просто включаешь “прослушку” дебаггера на порту.
import sys
target_pid = 12345 # PID работающего uvicorn / fastapi процесса
payload = r"""
import debugpy
HOST = "0.0.0.0"
PORT = 5679
debugpy.listen((HOST, PORT))
print(f"🐞 debugpy is listening on {HOST}:{PORT}")
# если хочешь остановить выполнение и ждать пока подключишь IDE:
# debugpy.wait_for_client()
# print("✅ debugger attached!")
"""
sys.remote_exec(target_pid, payload)
Дальше:
- ты делаешь port-forward (если Docker/K8s)
- подключаешь VS Code / PyCharm / nvim к localhost:5679
- ставишь breakpoints и дебажишь как обычно
Что важно
1) Это не “удалённое выполнение” как ssh.
Это прям “внутри процесса” - доступ к памяти, переменным, импортам.
2) Это опасно для продакшена.
Требует прав уровня
SYS_PTRACE (можно читать/менять процессы) - поэтому только для локалки/стендов.3) Это может стать стандартом для отладки контейнеров:
- баг воспроизводится только в k8s
- рестарт = баг пропал
- а тут просто подключился и посмотрел
📌 Статья на эту тему
@pythonl
Forwarded from Python/ django
This media is not supported in your browser
VIEW IN TELEGRAM
Ппрофессиональный подход к математике в Python строится не вокруг «посчитать формулу», а вокруг правильного стека инструментов и воспроизводимости. Всегда разделяй символьную математику, численные методы и работу с данными.
Для аналитики и вывода формул используй SymPy, для быстрых численных расчётов - NumPy, для научных алгоритмов - SciPy, для больших таблиц экспериментов - Pandas.
Никогда не смешивай «магические числа» в коде - все параметры выноси в переменные. Работай в Jupyter или VS Code с ноутбуками, фиксируй версии библиотек и обязательно проверяй устойчивость решений через разные методы (например, интеграл численно и аналитически). Так код становится не просто расчётом, а научным инструментом.
import numpy as np
import sympy as sp
from scipy import integrate
# 1. Символьная математика
x = sp.symbols('x')
expr = sp.sin(x) / x
analytic_integral = sp.integrate(expr, (x, 1, 10))
# 2. Численная математика
f = lambda x: np.sin(x) / x
numeric_integral, error = integrate.quad(f, 1, 10)
# 3. Векторизация вместо циклов
arr = np.linspace(1, 10, 1_000_000)
fast_result = np.sin(arr) / arr
print("Analytic:", analytic_integral)
print("Numeric:", numeric_integral, "Error:", error)
@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Python/ django
Большинство делает так - и теряет скорость, память и контроль над данными.
Ошибка №1 - читать огромный JSON целиком
json.load() загружает ВСЁ в память. На больших файлах ты сам создаёшь себе OOM.Ошибка №2 - не валидировать структуру
Ты думаешь, что поле есть. Прод думает иначе.
Ошибка №3 - парсить стандартным json там, где нужна скорость
Стандартный модуль медленный для high-load задач.
Как правильно:
- Большие файлы → читать потоково (ijson / построчно)
- Критичная скорость → использовать
orjson- Важные данные → сразу проверять ключи и типы
- API → оборачивать в try/except, а не надеяться
Продакшн-код работает не потому что “JSON простой”,
а потому что ты контролируешь объём, структуру и ошибки.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Python/ django
🔥 Полезная подборка каналов только код, практика и самые передовые инструменты, которые используют разработчики прямо сейчас.👇
🖥 ИИ: t.me/ai_machinelearning_big_data
🖥 Python: t.me/python
🖥 Linux: t.me/linuxacademiya
🖥 C++ t.me/cpluspluc
🖥 Docker: t.me/DevopsDocker
🖥 Хакинг: t.me/linuxkalii
🖥 Devops: t.me/DevOPSitsec
👣 Golang: t.me/Golang_google
🖥 Аналитика: t.me/data_analysis_ml
🖥 Javascript: t.me/javascriptv
🖥 C#: t.me/csharp_ci
🖥 Java: t.me/javatg
🖥 Базы данных: t.me/sqlhub
👣 Rust: t.me/rust_code
🤖 Технологии: t.me/vistehno
💰 Экономика и инвестиции в ИИ t.me/financeStable
💼 Актуальные вакансии: t.me/addlist/_zyy_jQ_QUsyM2Vi
🖥 Chatgpt бот в тг: t.me/Chatgpturbobot
📚 Бесплатные ит-книги: https://t.me/addlist/HwywK4fErd8wYzQy
🖥 Подборка по Golang: https://t.me/addlist/MUtJEeJSxeY2YTFi
⚡️ Лучшие ИИ ресурсы: https://t.me/addlist/2Ls-snqEeytkMDgy
Самое лучшее в этом: ты учишься даже тогда, когда “нет времени, просто потому что читаешь правильную ленту.
💰 Экономика и инвестиции в ИИ t.me/financeStable
💼 Актуальные вакансии: t.me/addlist/_zyy_jQ_QUsyM2Vi
📚 Бесплатные ит-книги: https://t.me/addlist/HwywK4fErd8wYzQy
⚡️ Лучшие ИИ ресурсы: https://t.me/addlist/2Ls-snqEeytkMDgy
Самое лучшее в этом: ты учишься даже тогда, когда “нет времени, просто потому что читаешь правильную ленту.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Python/ django
В Python 3.14 появилось решение, которое помогает избавиться от SQL-инъекций - t-strings 🔒
Проблема
Когда вы используете f-strings для SQL:
пользовательский ввод напрямую попадает в запрос.
Если злоумышленник передаст:
— база выполнит вредоносную команду.
Это классическая SQL injection.
Почему это неудобно сейчас
Безопасный способ — параметризованные запросы:
Но приходится:
• запускать шаблон отдельно
• передавать значения отдельно
• поддерживать две структуры
Что изменилось в Python 3.14
Появились template string literals (t-strings).
В отличие от f-strings, они:
• не возвращают готовую строку
• возвращают объект Template
• отдельно хранят текст и подставленные значения
Пример:
Теперь можно:
• получить все интерполяции
• проверить значения
• экранировать или валидировать их
• и только потом собрать финальный SQL
Результат:
• вредоносный ввод очищается
• SQL-инъекции блокируются
• таблицы остаются на месте
Почему это важно
f-strings - быстрые, но опасные для SQL.
t-strings позволяют сохранить удобство шаблонов и добавить контроль безопасности.
Python движется к безопасным шаблонам по умолчанию, меньше ручной защиты, меньше уязвимостей в продакшене.
📲 Max
@pythonl
Проблема
Когда вы используете f-strings для SQL:
query = f"SELECT * FROM users WHERE name = '{user_input}'"
пользовательский ввод напрямую попадает в запрос.
Если злоумышленник передаст:
admin'; DROP TABLE users; --
— база выполнит вредоносную команду.
Это классическая SQL injection.
Почему это неудобно сейчас
Безопасный способ — параметризованные запросы:
cursor.execute(
"SELECT * FROM users WHERE name = %s",
(user_input,)
)
Но приходится:
• запускать шаблон отдельно
• передавать значения отдельно
• поддерживать две структуры
Что изменилось в Python 3.14
Появились template string literals (t-strings).
В отличие от f-strings, они:
• не возвращают готовую строку
• возвращают объект Template
• отдельно хранят текст и подставленные значения
Пример:
query = t"SELECT * FROM users WHERE name = {user_input}"
Теперь можно:
• получить все интерполяции
• проверить значения
• экранировать или валидировать их
• и только потом собрать финальный SQL
safe = safe_sql(query)
Результат:
• вредоносный ввод очищается
• SQL-инъекции блокируются
• таблицы остаются на месте
Почему это важно
f-strings - быстрые, но опасные для SQL.
t-strings позволяют сохранить удобство шаблонов и добавить контроль безопасности.
Python движется к безопасным шаблонам по умолчанию, меньше ручной защиты, меньше уязвимостей в продакшене.
@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM