This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ MicroVMS — новая платформа для запуска кода от AI-агентов с максимальной безопасностью и скоростью.
В отличие от Docker и других тяжелых решений, MicroVMS использует легковесные песочницы для быстрой изоляции, мгновенного старта и простого управления.
● Поддержка разных сред: Python, Node.js и другие
● Идеально для AI-агентов — разработка и запуск без лишних сложностей
● Удобная система управления проектами — настройка песочниц в пару кликов
Если вы хотите запускать код AI-агентов быстро, безопасно и удобно — обратите внимание на MicroVMS.
pip install microsandbox
🔗 Github (https://github.com/microsandbox/microsandbox)
@Python_Community_ru
В отличие от Docker и других тяжелых решений, MicroVMS использует легковесные песочницы для быстрой изоляции, мгновенного старта и простого управления.
● Поддержка разных сред: Python, Node.js и другие
● Идеально для AI-агентов — разработка и запуск без лишних сложностей
● Удобная система управления проектами — настройка песочниц в пару кликов
Если вы хотите запускать код AI-агентов быстро, безопасно и удобно — обратите внимание на MicroVMS.
pip install microsandbox
🔗 Github (https://github.com/microsandbox/microsandbox)
@Python_Community_ru
🖥 py-pglite — PostgreSQL без установки, тестируй как с SQLite!
py-pglite — обёртка PGlite для Python, позволяющая запускать настоящую базу PostgreSQL прямо при тестах. Без Docker, без настройки — просто импортируй и работай.
📌 Почему это круто:
- 🧪 Ноль конфигурации: никакого Postgres и Docker, только Python
- ⚡ Молниеносный старт: 2–3 с против 30–60 с на традиционные подходы :contentReference[oaicite:2]{index=2}
- 🔐 Изолированные базы: новая база для каждого теста — чисто и безопасно
- 🏗️ Реальный Postgres: работает с JSONB, массивами, оконными функциями
- 🔌 Совместимость: SQLAlchemy, Django, psycopg, asyncpg — любая связка :contentReference[oaicite:3]{index=3}
💡 Примеры установки:
pip install py-pglite
pip install py-pglite[sqlalchemy] # SQLAlchemy/SQLModel
pip install py-pglite[django] # Django + pytest-django
pip install py-pglite[asyncpg] # Асинхронный клиент
pip install py-pglite[all] # Всё сразу
🔧 Пример (SQLAlchemy)
python
def test_sqlalchemy_just_works(pglite_session):
user = User(name="Alice")
pglite_session.add(user)
pglite_session.commit()
assert user.id is not None
py‑pglite — идеальный инструмент для unit- и интеграционных тестов, где нужен настоящий Postgres, но без всей админской рутины.
Полноценный PostgreSQL — без его тяжеловесности.
▪Github (https://github.com/wey-gu/py-pglite)
#python #sql #PostgreSQL #opensource
@Python_Community_ru
py-pglite — обёртка PGlite для Python, позволяющая запускать настоящую базу PostgreSQL прямо при тестах. Без Docker, без настройки — просто импортируй и работай.
📌 Почему это круто:
- 🧪 Ноль конфигурации: никакого Postgres и Docker, только Python
- ⚡ Молниеносный старт: 2–3 с против 30–60 с на традиционные подходы :contentReference[oaicite:2]{index=2}
- 🔐 Изолированные базы: новая база для каждого теста — чисто и безопасно
- 🏗️ Реальный Postgres: работает с JSONB, массивами, оконными функциями
- 🔌 Совместимость: SQLAlchemy, Django, psycopg, asyncpg — любая связка :contentReference[oaicite:3]{index=3}
💡 Примеры установки:
pip install py-pglite
pip install py-pglite[sqlalchemy] # SQLAlchemy/SQLModel
pip install py-pglite[django] # Django + pytest-django
pip install py-pglite[asyncpg] # Асинхронный клиент
pip install py-pglite[all] # Всё сразу
🔧 Пример (SQLAlchemy)
python
def test_sqlalchemy_just_works(pglite_session):
user = User(name="Alice")
pglite_session.add(user)
pglite_session.commit()
assert user.id is not None
py‑pglite — идеальный инструмент для unit- и интеграционных тестов, где нужен настоящий Postgres, но без всей админской рутины.
Полноценный PostgreSQL — без его тяжеловесности.
▪Github (https://github.com/wey-gu/py-pglite)
#python #sql #PostgreSQL #opensource
@Python_Community_ru
🚀 TurboDRF — ускоритель Django REST Framework без боли
TurboDRF — лёгкий способ ускорить ваш Django API без перехода на FastAPI или переписывания логики.
🔥 Что даёт TurboDRF:
• ⚡ Быстрый рендер сериализаторов
• 🧠 Автоматический prefetch_related и select_related
• 🧊 Кэширование сериализованных ответов
• 🧩 Совместим с обычными DRF-сериализаторами
📦 Установка:
pip install turbodrf
🛠️ Пример:
from turbodrf.mixins import TurboModelSerializer
class MySerializer(TurboModelSerializer):
class Meta:
model = MyModel
fields = "__all__"
✅ Идеален для больших Django-проектов, где важна скорость ответа.
🔗 GitHub: https://github.com/alexandercollins/turbodrf
@Python_Community_ru
TurboDRF — лёгкий способ ускорить ваш Django API без перехода на FastAPI или переписывания логики.
🔥 Что даёт TurboDRF:
• ⚡ Быстрый рендер сериализаторов
• 🧠 Автоматический prefetch_related и select_related
• 🧊 Кэширование сериализованных ответов
• 🧩 Совместим с обычными DRF-сериализаторами
📦 Установка:
pip install turbodrf
🛠️ Пример:
from turbodrf.mixins import TurboModelSerializer
class MySerializer(TurboModelSerializer):
class Meta:
model = MyModel
fields = "__all__"
✅ Идеален для больших Django-проектов, где важна скорость ответа.
🔗 GitHub: https://github.com/alexandercollins/turbodrf
@Python_Community_ru
В преддверии новой активности мы собрали в одну папку 18 Telegram-каналов известных профессионалов и попросили их авторов подготовить для вас документы, которые помогут:
Please open Telegram to view this post
VIEW IN TELEGRAM
🐍 PyLeak — найди утечку памяти в своём Python-коде
PyLeak — простой и мощный инструмент для отладки утечек памяти в Python-приложениях.
🔍 Возможности:
• Показывает объекты, которые не удаляет сборщик мусора
• Строит граф зависимостей между объектами
• Выявляет циклические ссылки и "висящие" объекты
• Поддерживает визуализацию через Graphviz
📦 Установка:
pip install pyleak
🧰 Идеален для отладки сервисов, где память утекает незаметно.
🔗 GitHub (https://github.com/deepankarm/pyleak)
@Python_Community_ru
PyLeak — простой и мощный инструмент для отладки утечек памяти в Python-приложениях.
🔍 Возможности:
• Показывает объекты, которые не удаляет сборщик мусора
• Строит граф зависимостей между объектами
• Выявляет циклические ссылки и "висящие" объекты
• Поддерживает визуализацию через Graphviz
📦 Установка:
pip install pyleak
🧰 Идеален для отладки сервисов, где память утекает незаметно.
🔗 GitHub (https://github.com/deepankarm/pyleak)
@Python_Community_ru
🖥 Совет по Python:
from pathlib import Path
# Создаем объект Path для заданного пути к файлу
path = Path("C:/Users/test.md")
# Получаем имя файла вместе с расширением
print(path.name) # 'test.md'
# Получаем только имя файла без расширения
print(path.stem) # 'test'
# Получаем расширение файла (с точкой)
print(path.suffix) # '.md'
# Получаем родительскую директорию (папку)
print(path.parent) # 'C:/Users'
С помощью модуля pathlib вы можете получать различные части пути — имя файла, расширение, родительскую директорию. Это упрощает работу с файловыми путями и их анализ.
Объяснение:
- path.name — возвращает полное имя файла (например, test.md).
- path.stem — возвращает имя файла без расширения (например, test).
- path.suffix — возвращает расширение файла (например, .md).
- path.parent — возвращает путь к родительской директории (например, C:/Users).
Модуль pathlib позволяет удобно разбирать путь к файлу на части и работать с ними, не используя строковые операции вручную. Это особенно полезно для кроссплатформенной работы с файлами и папками.
@Python_Community_ru
from pathlib import Path
# Создаем объект Path для заданного пути к файлу
path = Path("C:/Users/test.md")
# Получаем имя файла вместе с расширением
print(path.name) # 'test.md'
# Получаем только имя файла без расширения
print(path.stem) # 'test'
# Получаем расширение файла (с точкой)
print(path.suffix) # '.md'
# Получаем родительскую директорию (папку)
print(path.parent) # 'C:/Users'
С помощью модуля pathlib вы можете получать различные части пути — имя файла, расширение, родительскую директорию. Это упрощает работу с файловыми путями и их анализ.
Объяснение:
- path.name — возвращает полное имя файла (например, test.md).
- path.stem — возвращает имя файла без расширения (например, test).
- path.suffix — возвращает расширение файла (например, .md).
- path.parent — возвращает путь к родительской директории (например, C:/Users).
Модуль pathlib позволяет удобно разбирать путь к файлу на части и работать с ними, не используя строковые операции вручную. Это особенно полезно для кроссплатформенной работы с файлами и папками.
@Python_Community_ru
📊 Deptry — детектор проблем с зависимостями в Python. Этот инструмент сканирует проект на расхождения между импортами в коде и задекларированными зависимостями. Он работает с Poetry, pip и PDM, находя три типа проблем: неиспользуемые пакеты, отсутствующие зависимости и модули, ошибочно помеченные как dev-зависимости.
Инструмент анализирует не только requirements.txt, но и динамические импорты черезависимостями что снижает количество ложных срабатываний. Для настройки можно использовать как CLI-аргументы, так и секцию [tool.deptry] в� Deptry — детекто
🤖 GitHub (https://github.com/fpgmaas/deptry)
@Python_Community_ru
Инструмент анализирует не только requirements.txt, но и динамические импорты черезависимостями что снижает количество ложных срабатываний. Для настройки можно использовать как CLI-аргументы, так и секцию [tool.deptry] в� Deptry — детекто
🤖 GitHub (https://github.com/fpgmaas/deptry)
@Python_Community_ru
🖥 Как написать худший возможный Python-код
Иногда проще показать, как не надо, чем объяснять, как надо.
Вот список «правил», которые помогут вам гарантированно испортить любой Python-проект.
1. 🔒 Используйте непонятные имена переменных
Называйте переменные x, y, a, thing. Абстракция — залог путаницы.
def f(x, y, z=None):
a = x * 2
b = y + a if z else y - a
c = [i for i in range(a) if i % 2]
return sum(c) + b
2.🧠 Пихайте максимум логики в одну строку
Сложные тернарные выражения и вложенные list comprehension — всё в одной строке.
result = [x if x > 0 else (y if y < 0 else z) for x in data if x or y and not z]
3.⚠️ Используйте eval() и exec()
Это медленно, небезопасно и глупо — но зато эффектно.
eval("d['" + key + "']")
4.🔁 Переиспользуйте переменные с разными типами
Пусть одна переменная будет и строкой, и числом, и списком — динамическая типизация же!
value = "42"
value = int(value)
value = [value] * value
5.🌍 Используйте глобальные переменные
Изменяйте состояние приложения откуда угодно. Особенно изнутри функций.
counter = 0
def increment():
global counter
counter += 1
6.🔮 Используйте магические числа и строки
Без пояснений. Пусть коллеги гадают, почему именно 42 или "xyz".
if user.role == "xyz" and user.level > 42:
access_granted()
7.📏 Игнорируйте стиль и отступы
Никаких PEP8, никаких правил. Пиши, как хочешь.
def foo():print("start")
if True:
print("yes")
else:
print("no")
8.🧱 Копируйте код из Stack Overflow, не вникая
Ctrl+C — это тоже разработка.
def complex_logic(x):
return (lambda y: (lambda z: z**2)(y + 1))(x)
9.🧩 Придумывайте абстракции без надобности
Вместо простой функции — классы, фабрики и стратегии.
class HandlerFactory:
def get_handler(self):
class Handler:
def handle(self, x): return x
return Handler()
10. 💤 Добавляйте мёртвый код
Никогда не удаляй — вдруг пригодится. И пусть он грузится в каждый запуск.
def legacy_feature():
print("This feature is deprecated")
return
# нигде не вызывается
11.🔀 Не пишите документацию
Комментарии только мешают. Кто захочет — разберётся.
def a(x): return x+1
12.🧪 Пиши без тестов
Если код работает — зачем его проверять?
# Просто запускай и смотри глазами
process_user(data)
13. 🤖 Не используй AI и автодополнение
Только ручной кодинг, без подсказок. Ошибки — путь мастера.
🧠 Заключение
Все эти советы — примеры того, как не стоит писать код.
Если вы узнали себя — пора остановиться. Ведь Python задуман как язык, где важна читаемость, простота и явность.
"Beautiful is better than ugly.
Explicit is better than implicit.
Readability counts."
— The Zen of Python
@Python_Community_ru
Иногда проще показать, как не надо, чем объяснять, как надо.
Вот список «правил», которые помогут вам гарантированно испортить любой Python-проект.
1. 🔒 Используйте непонятные имена переменных
Называйте переменные x, y, a, thing. Абстракция — залог путаницы.
def f(x, y, z=None):
a = x * 2
b = y + a if z else y - a
c = [i for i in range(a) if i % 2]
return sum(c) + b
2.🧠 Пихайте максимум логики в одну строку
Сложные тернарные выражения и вложенные list comprehension — всё в одной строке.
result = [x if x > 0 else (y if y < 0 else z) for x in data if x or y and not z]
3.⚠️ Используйте eval() и exec()
Это медленно, небезопасно и глупо — но зато эффектно.
eval("d['" + key + "']")
4.🔁 Переиспользуйте переменные с разными типами
Пусть одна переменная будет и строкой, и числом, и списком — динамическая типизация же!
value = "42"
value = int(value)
value = [value] * value
5.🌍 Используйте глобальные переменные
Изменяйте состояние приложения откуда угодно. Особенно изнутри функций.
counter = 0
def increment():
global counter
counter += 1
6.🔮 Используйте магические числа и строки
Без пояснений. Пусть коллеги гадают, почему именно 42 или "xyz".
if user.role == "xyz" and user.level > 42:
access_granted()
7.📏 Игнорируйте стиль и отступы
Никаких PEP8, никаких правил. Пиши, как хочешь.
def foo():print("start")
if True:
print("yes")
else:
print("no")
8.🧱 Копируйте код из Stack Overflow, не вникая
Ctrl+C — это тоже разработка.
def complex_logic(x):
return (lambda y: (lambda z: z**2)(y + 1))(x)
9.🧩 Придумывайте абстракции без надобности
Вместо простой функции — классы, фабрики и стратегии.
class HandlerFactory:
def get_handler(self):
class Handler:
def handle(self, x): return x
return Handler()
10. 💤 Добавляйте мёртвый код
Никогда не удаляй — вдруг пригодится. И пусть он грузится в каждый запуск.
def legacy_feature():
print("This feature is deprecated")
return
# нигде не вызывается
11.🔀 Не пишите документацию
Комментарии только мешают. Кто захочет — разберётся.
def a(x): return x+1
12.🧪 Пиши без тестов
Если код работает — зачем его проверять?
# Просто запускай и смотри глазами
process_user(data)
13. 🤖 Не используй AI и автодополнение
Только ручной кодинг, без подсказок. Ошибки — путь мастера.
🧠 Заключение
Все эти советы — примеры того, как не стоит писать код.
Если вы узнали себя — пора остановиться. Ведь Python задуман как язык, где важна читаемость, простота и явность.
"Beautiful is better than ugly.
Explicit is better than implicit.
Readability counts."
— The Zen of Python
@Python_Community_ru
🐍 Python-задача: что выведет этот код с вложенными генераторами?
gen = (x for x in range(3))
def wrap(g):
return (x * 2 for x in g)
gen2 = wrap(gen)
print(list(gen))
print(list(gen2))
🔍 Варианты:
• a) [0, 1, 2], [0, 2, 4]
• b) [0, 1, 2], []
• c) [], [0, 2, 4]
• d) [0, 1, 2], Ошибка
💡 Разбор:
- `gen = (x for x in range(3))` — генератор 0, 1, 2
- `wrap(gen)` — создаёт **новый генератор**, который берёт значения из `gen` и умножает на 2
Но генераторы **исчерпаемы**: после первого полного прохода `list(gen)` → `gen` становится пустым
Значит:
- `list(gen)` → `[0, 1, 2]`
- `gen2 = wrap(gen)` теперь ссылается на **пустой** `gen`
- `list(gen2)` → `[]`
✅ **Правильный ответ: b) `[0, 1, 2]`, `[]`**
🧠 **Вывод:** если оборачиваешь генератор — не "прожигай" его до передачи дальше. Генераторы нельзя перезапустить или "перемотать".
🛠️ Совет: если данные нужны повторно — сохрани их в список:
```python
data = list(gen)
```
или используй itertools.tee для разветвления итератора.
@Python_Community_ru
gen = (x for x in range(3))
def wrap(g):
return (x * 2 for x in g)
gen2 = wrap(gen)
print(list(gen))
print(list(gen2))
🔍 Варианты:
• a) [0, 1, 2], [0, 2, 4]
• b) [0, 1, 2], []
• c) [], [0, 2, 4]
• d) [0, 1, 2], Ошибка
💡 Разбор:
- `gen = (x for x in range(3))` — генератор 0, 1, 2
- `wrap(gen)` — создаёт **новый генератор**, который берёт значения из `gen` и умножает на 2
Но генераторы **исчерпаемы**: после первого полного прохода `list(gen)` → `gen` становится пустым
Значит:
- `list(gen)` → `[0, 1, 2]`
- `gen2 = wrap(gen)` теперь ссылается на **пустой** `gen`
- `list(gen2)` → `[]`
✅ **Правильный ответ: b) `[0, 1, 2]`, `[]`**
🧠 **Вывод:** если оборачиваешь генератор — не "прожигай" его до передачи дальше. Генераторы нельзя перезапустить или "перемотать".
🛠️ Совет: если данные нужны повторно — сохрани их в список:
```python
data = list(gen)
```
или используй itertools.tee для разветвления итератора.
@Python_Community_ru
This media is not supported in your browser
VIEW IN TELEGRAM
🌟 alphaXiv —выпустили расширение для хрома
alphaXiv упрощает работу с научными статьями (arXiv, bioRxiv, PDF):
● чат с ИИ прямо в документе: выделение текста открывает диалог
● ссылки на другие статье через “@” для быстрого вызова статей
● позволяет генерировать блог одним кликом: иллюстрации к статьям, ключевые идеи, перевод
● закладки и автоматические BibTeX-цитаты для хранения и ссылок
https://chromewebstore.google.com/detail/alphaxiv-understand-resea/liihfcjialakefgidmaadhajjikbjjab
@Python_Community_ru
alphaXiv упрощает работу с научными статьями (arXiv, bioRxiv, PDF):
● чат с ИИ прямо в документе: выделение текста открывает диалог
● ссылки на другие статье через “@” для быстрого вызова статей
● позволяет генерировать блог одним кликом: иллюстрации к статьям, ключевые идеи, перевод
● закладки и автоматические BibTeX-цитаты для хранения и ссылок
https://chromewebstore.google.com/detail/alphaxiv-understand-resea/liihfcjialakefgidmaadhajjikbjjab
@Python_Community_ru
📦 InvenTree — умная система учета для мастерских и инженерных проектов. Этот open-source инструмент — достойная замена Excel, которая поможет вам перестать страдать от перегруженных корпоративных систем.
Инструмент предлагает продуманный баланс между простотой и функциональностью: отслеживание деталей, управление несколькими складами, работа с партиями и серийными номерами — всё в одном месте.
📌 Особенности проекта:
— Гибкая интеграция через REST API и Python-модули
— Мобильные приложения для iOS/Android со сканированием штрих-кодов
— Плагинная система для кастомизации под конкретные нужды
— Простой деплой — от Docker до однострочной установки на Linux
🤖 GitHub (https://github.com/inventree/InvenTree)
@Python_Community_ru
Инструмент предлагает продуманный баланс между простотой и функциональностью: отслеживание деталей, управление несколькими складами, работа с партиями и серийными номерами — всё в одном месте.
📌 Особенности проекта:
— Гибкая интеграция через REST API и Python-модули
— Мобильные приложения для iOS/Android со сканированием штрих-кодов
— Плагинная система для кастомизации под конкретные нужды
— Простой деплой — от Docker до однострочной установки на Linux
🤖 GitHub (https://github.com/inventree/InvenTree)
@Python_Community_ru
🎭 Playwright MCP: AI-доступ к браузеру через Model Context Protocol
Playwright MCP — это сервер Model Context Protocol поверх Microsoft Playwright, который позволяет LLM управлять полноценным браузером через структурированные данные, а не по скриншотам.
• Доступ к accessibility tree
– MCP-клиенты получают иерархию элементов страницы (кнопки, поля, ссылки) вместо изображений, что делает навигацию быстрой и детерминированной :contentReference[oaicite:0]{index=0}
• Множественные подключения
– Поддержка нескольких клиентов к одной сессии: одновременное тестирование, отладка и мониторинг без лишних запусках браузера :contentReference[oaicite:1]{index=1}
• AI-автогенерация тестов
– В режиме Agent Mode Playwright MCP может самостоятельно исследовать приложение и писать готовые тесты на основе его поведения :contentReference[oaicite:2]{index=2}
• Высокая производительность
– Обходится без тяжёлых компьютерного зрения и OCR, экономит ресурсы и снижает флакущие ошибки сравнения скриншотов
• Простая настройка
– Установка через npm/yarn и запуск:
npm install playwright
npx playwright launch --server
– Клиентское подключение через WebSocket:
const { chromium } = require('playwright');
const browser = await chromium.connectOverCDP('ws://localhost:PORT');
🔗 Репозиторий: https://github.com/microsoft/playwright-mcp
@Python_Community_ru
Playwright MCP — это сервер Model Context Protocol поверх Microsoft Playwright, который позволяет LLM управлять полноценным браузером через структурированные данные, а не по скриншотам.
• Доступ к accessibility tree
– MCP-клиенты получают иерархию элементов страницы (кнопки, поля, ссылки) вместо изображений, что делает навигацию быстрой и детерминированной :contentReference[oaicite:0]{index=0}
• Множественные подключения
– Поддержка нескольких клиентов к одной сессии: одновременное тестирование, отладка и мониторинг без лишних запусках браузера :contentReference[oaicite:1]{index=1}
• AI-автогенерация тестов
– В режиме Agent Mode Playwright MCP может самостоятельно исследовать приложение и писать готовые тесты на основе его поведения :contentReference[oaicite:2]{index=2}
• Высокая производительность
– Обходится без тяжёлых компьютерного зрения и OCR, экономит ресурсы и снижает флакущие ошибки сравнения скриншотов
• Простая настройка
– Установка через npm/yarn и запуск:
npm install playwright
npx playwright launch --server
– Клиентское подключение через WebSocket:
const { chromium } = require('playwright');
const browser = await chromium.connectOverCDP('ws://localhost:PORT');
🔗 Репозиторий: https://github.com/microsoft/playwright-mcp
@Python_Community_ru
🛠️ Copier — удобный инструмент для создания и обновления проектов из шаблонов. Эта Python-утилита умеет работать как с локальными путями, так и с Git-репозиториями, подставляя переменные в файлы любого формата. Главная фишка Copier — это аккуратная работа с существующими файлами: он не перезаписывает их без явного указания.
Инструмент будет полезен тем, кто часто создаёт однотипные проекты или хочет автоматизировать их обновление. Шаблоны поддерживают сложную логику через Jinja2, а настройки задаются в простом YAML-формате. Для начала работы достаточно установить Copier через pipx или pip. Проект развивается при поддержке сообщества и доступен под лицензией MIT.
🤖 GitHub (https://github.com/copier-org/copier)
@Python_Community_ru
Инструмент будет полезен тем, кто часто создаёт однотипные проекты или хочет автоматизировать их обновление. Шаблоны поддерживают сложную логику через Jinja2, а настройки задаются в простом YAML-формате. Для начала работы достаточно установить Copier через pipx или pip. Проект развивается при поддержке сообщества и доступен под лицензией MIT.
🤖 GitHub (https://github.com/copier-org/copier)
@Python_Community_ru
🚦 premier — удобный инструмент для ограничения частоты вызовов в Python
Что это такое:
premier — это библиотека для контроля скорости вызовов функций в Python. Она помогает ограничить нагрузку на API, базу данных или любой другой ресурс, чтобы не получить отказ или блокировку.
📌 Возможности:
• Поддержка популярных алгоритмов: token bucket, fixed window, leaky bucket
• Работает как с обычными, так и с асинхронными функциями
• Поддерживает Redis и другие хранилища для распределённого ограничения
• Гибкая настройка: лимиты, ключи, длительность окна, своя логика
• Простое применение через декораторы
🧪 Пример:
from premier import throttler, ThrottleAlgo, RedisHandler
@throttler.fixed_window(quota=3, duration=5)
def request(url: str):
# максимум 3 вызова каждые 5 секунд
...
@throttler.token_bucket(quota=5, duration=60)
async def async_request(...):
# асинхронный токен-бакет
...
🔧 Где применить:
• Ограничение частоты запросов к внешним API
• Защита от перегрузки микросервисов
• Контроль доступа к ресурсам внутри приложения
• Настройка rate-limit в фоновом обработчике или очереди
✅ Почему стоит попробовать:
premier — лёгкая, понятная и гибкая библиотека. Она упрощает внедрение rate limiting, особенно если нужно масштабироваться или работать в асинхронной среде.
Если строишь что-то распределённое или просто не хочешь случайно “положить” сервис из-за частых вызовов — premier отлично подойдёт.
📌 Github (https://github.com/raceychan/premier)
@Python_Community_ru
Что это такое:
premier — это библиотека для контроля скорости вызовов функций в Python. Она помогает ограничить нагрузку на API, базу данных или любой другой ресурс, чтобы не получить отказ или блокировку.
📌 Возможности:
• Поддержка популярных алгоритмов: token bucket, fixed window, leaky bucket
• Работает как с обычными, так и с асинхронными функциями
• Поддерживает Redis и другие хранилища для распределённого ограничения
• Гибкая настройка: лимиты, ключи, длительность окна, своя логика
• Простое применение через декораторы
🧪 Пример:
from premier import throttler, ThrottleAlgo, RedisHandler
@throttler.fixed_window(quota=3, duration=5)
def request(url: str):
# максимум 3 вызова каждые 5 секунд
...
@throttler.token_bucket(quota=5, duration=60)
async def async_request(...):
# асинхронный токен-бакет
...
🔧 Где применить:
• Ограничение частоты запросов к внешним API
• Защита от перегрузки микросервисов
• Контроль доступа к ресурсам внутри приложения
• Настройка rate-limit в фоновом обработчике или очереди
✅ Почему стоит попробовать:
premier — лёгкая, понятная и гибкая библиотека. Она упрощает внедрение rate limiting, особенно если нужно масштабироваться или работать в асинхронной среде.
Если строишь что-то распределённое или просто не хочешь случайно “положить” сервис из-за частых вызовов — premier отлично подойдёт.
📌 Github (https://github.com/raceychan/premier)
@Python_Community_ru
🎯 Хочешь следить за загрузкой своей GPU прямо из Python?
Вот простой скрипт, который показывает текущую загрузку видеокарты NVIDIA (через `nvidia-smi`). Подходит для мониторинга в ML-задачах, инференсе и просто для интереса.
📦 Зависимости: установленный nvidia-smi и Python 3.6+
🧠 Код:
import subprocess
def get_gpu_utilization():
try:
result = subprocess.check_output(
['nvidia-smi', '--query-gpu=utilization.gpu,memory.used,memory.total',
'--format=csv,nounits,noheader'],
encoding='utf-8'
)
lines = result.strip().split('\n')
for idx, line in enumerate(lines):
gpu_util, mem_used, mem_total = map(str.strip, line.split(','))
print(f"🖥 GPU {idx}: {gpu_util}% load | {mem_used} MiB / {mem_total} MiB")
except FileNotFoundError:
print("❌ nvidia-smi not found. Make sure NVIDIA drivers are installed.")
except Exception as e:
print(f"⚠️ Error: {e}")
get_gpu_utilization()
📊 Вывод будет примерно такой:
GPU 0: 23% load | 412 MiB / 8192 MiB
🔥 Советы:
• Можно запускать в цикле для live-мониторинга
• Легко интегрировать в Telegram-бота или Slack-уведомления
• Работает на всех машинах с установленным NVIDIA драйвером и nvidia-smi
@Python_Community_ru
Вот простой скрипт, который показывает текущую загрузку видеокарты NVIDIA (через `nvidia-smi`). Подходит для мониторинга в ML-задачах, инференсе и просто для интереса.
📦 Зависимости: установленный nvidia-smi и Python 3.6+
🧠 Код:
import subprocess
def get_gpu_utilization():
try:
result = subprocess.check_output(
['nvidia-smi', '--query-gpu=utilization.gpu,memory.used,memory.total',
'--format=csv,nounits,noheader'],
encoding='utf-8'
)
lines = result.strip().split('\n')
for idx, line in enumerate(lines):
gpu_util, mem_used, mem_total = map(str.strip, line.split(','))
print(f"🖥 GPU {idx}: {gpu_util}% load | {mem_used} MiB / {mem_total} MiB")
except FileNotFoundError:
print("❌ nvidia-smi not found. Make sure NVIDIA drivers are installed.")
except Exception as e:
print(f"⚠️ Error: {e}")
get_gpu_utilization()
📊 Вывод будет примерно такой:
GPU 0: 23% load | 412 MiB / 8192 MiB
🔥 Советы:
• Можно запускать в цикле для live-мониторинга
• Легко интегрировать в Telegram-бота или Slack-уведомления
• Работает на всех машинах с установленным NVIDIA драйвером и nvidia-smi
@Python_Community_ru
Общий сбор питонистов на митапе ЮMoney ™️
Питоняшки — бесплатный митап ЮMoney для Python-разработчиков.
✅ 3 июля, в четверг, в 19:00 (мск) — приходите на митап в Санкт-Петербурге или подключайтесь онлайн.
О чём будут доклады?
🟣 Это не те метрики, что вы ищете. Разберёмся, почему стандартного экспортёра может не хватать, и как написать свой на Python.
🟣 Кодогенерация: как компьютеры учатся писать код за нас. Поговорим про прошлое, настоящее и будущее кодогенерации в разных языках программирования.
🟣 Ruff: как не положить всё, переходя на новые правила? Поговорим про линтеры, форматтеры и подводные камни при переходе на Ruff.
🟣 Секреты успеха змеи в мире пауков. Обсудим, как мы применяли scrapy и playwright в ЮMoney, чтобы создать сервис модерации сайтов.
Зарегистрируйтесь, чтобы принять участие. Все подробности — на сайте митапа Питоняшки (https://events.yoomoney.ru/python-2025?utm_source=tg&utm_medium=post&utm_campaign=hr_python_2025&utm_term=paid&utm_content=pythonl&erid=2VtzqxVvNGF) 🔥
@Python_Community_ru
Питоняшки — бесплатный митап ЮMoney для Python-разработчиков.
✅ 3 июля, в четверг, в 19:00 (мск) — приходите на митап в Санкт-Петербурге или подключайтесь онлайн.
О чём будут доклады?
🟣 Это не те метрики, что вы ищете. Разберёмся, почему стандартного экспортёра может не хватать, и как написать свой на Python.
🟣 Кодогенерация: как компьютеры учатся писать код за нас. Поговорим про прошлое, настоящее и будущее кодогенерации в разных языках программирования.
🟣 Ruff: как не положить всё, переходя на новые правила? Поговорим про линтеры, форматтеры и подводные камни при переходе на Ruff.
🟣 Секреты успеха змеи в мире пауков. Обсудим, как мы применяли scrapy и playwright в ЮMoney, чтобы создать сервис модерации сайтов.
Зарегистрируйтесь, чтобы принять участие. Все подробности — на сайте митапа Питоняшки (https://events.yoomoney.ru/python-2025?utm_source=tg&utm_medium=post&utm_campaign=hr_python_2025&utm_term=paid&utm_content=pythonl&erid=2VtzqxVvNGF) 🔥
@Python_Community_ru
⚡️ PyOpenCL — ускоряем Python вычисления на GPU. Этот проект даёт доступ к технологии OpenCL прямо из Python, позволяя задействовать не только видеокарты, но и любые параллельные вычислительные устройства. Он сочетает низкоуровневый контроль с автоматической обработкой ошибок и привязкой жизненного цикла объектов.
Инструмент имеет обширную документацию с примерами: от простого поэлементного умножения массивов до сложных алгоритмов с использованием локальной памяти GPU. Проект работает с реализациями OpenCL от Apple, AMD и Nvidia, а установка через Conda занимает буквально пару команд.
🤖 GitHub (https://github.com/inducer/pyopencl)
@Python_Community_ru
Инструмент имеет обширную документацию с примерами: от простого поэлементного умножения массивов до сложных алгоритмов с использованием локальной памяти GPU. Проект работает с реализациями OpenCL от Apple, AMD и Nvidia, а установка через Conda занимает буквально пару команд.
🤖 GitHub (https://github.com/inducer/pyopencl)
@Python_Community_ru