Pyrefly — модный тайпчекер, написанный на Rust — добавил нативную поддержку Pydantic. Теперь это второй (после Mypy) инструмент, который понимает магию Pydantic-моделей без костылей.
Pyrefly выкатили в апреле 2025 как замену старому Pyre, который использовался для кода инсты в сами-знаете-какой организации. Написан на Rust, работает со скоростью до 1,8 млн строк/сек — это в 14 раз быстрее Mypy и Pyright. В ноябре вышла бета (v0.42+), сейчас актуальная версия 0.45.
Что поддерживается для Pydantic:
🔘 ConfigDict и immutable-поля
🔘 Strict vs non-strict валидация
🔘 Extra fields
🔘 Field constraints
🔘 Root models
🔘 Alias validation
Главное отличие от Mypy: всё встроено в сам тайпчекер, не нужен отдельный плагин. Pyright пока Pydantic нативно не поддерживает.
Зачем пробовать: если у вас большой Python-проект с Pydantic-моделями — Pyrefly даст и скорость проверки, и правильный вывод типов для моделей. Есть VSCode-расширение с autocomplete, go-to-definition, автоимпортами.
Код на гитхабе, документация по интеграции есть как у Pyrefly, так и у Pydantic.
@zen_of_python
Pyrefly выкатили в апреле 2025 как замену старому Pyre, который использовался для кода инсты в сами-знаете-какой организации. Написан на Rust, работает со скоростью до 1,8 млн строк/сек — это в 14 раз быстрее Mypy и Pyright. В ноябре вышла бета (v0.42+), сейчас актуальная версия 0.45.
Что поддерживается для Pydantic:
Главное отличие от Mypy: всё встроено в сам тайпчекер, не нужен отдельный плагин. Pyright пока Pydantic нативно не поддерживает.
Зачем пробовать: если у вас большой Python-проект с Pydantic-моделями — Pyrefly даст и скорость проверки, и правильный вывод типов для моделей. Есть VSCode-расширение с autocomplete, go-to-definition, автоимпортами.
Код на гитхабе, документация по интеграции есть как у Pyrefly, так и у Pydantic.
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤3
PyAtlas — интерактивная карта 10 000 самых популярных пакетов PyPI, где похожие библиотеки расположены рядом друг с другом.
Как работает: описания пакетов прогоняются через sentence transformer → получаются эмбеддинги → UMAP сжимает их в 2D → кластеризация группирует по темам. В итоге веб-фреймворки оказываются в одном углу, ML-библиотеки в другом, тулзы для тестирования в третьем.
Что можно делать:
🔘 Просто тыкать и исследовать экосистему Python с высоты птичьего полёта
🔘 Найти пакет, который уже используешь, и посмотреть что рядом — там будут альтернативы и связанные инструменты
🔘 Обнаружить библиотеки, о которых не слышал, но которые решают похожие задачи
Практическая польза: когда ищешь «что-то вроде X, но для Y» — карта покажет соседей по смыслу, а не по алфавиту. Или когда хочешь понять что вообще существует в какой-то нише.
Под капотом: Python, sentence-transformers для эмбеддингов, UMAP для редукции размерности, HDBSCAN для кластеризации. Код открыт на GitHub.
@zen_of_python
Как работает: описания пакетов прогоняются через sentence transformer → получаются эмбеддинги → UMAP сжимает их в 2D → кластеризация группирует по темам. В итоге веб-фреймворки оказываются в одном углу, ML-библиотеки в другом, тулзы для тестирования в третьем.
Что можно делать:
Практическая польза: когда ищешь «что-то вроде X, но для Y» — карта покажет соседей по смыслу, а не по алфавиту. Или когда хочешь понять что вообще существует в какой-то нише.
Под капотом: Python, sentence-transformers для эмбеддингов, UMAP для редукции размерности, HDBSCAN для кластеризации. Код открыт на GitHub.
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4✍3😍3
JetBrains опубликовали State of Developer Ecosystem 2025 — опрос 24 500+ разработчиков из 190+ стран. Python на первом месте с 35%.
Топ языков:
🐍 Python — 35%
☕️ Java — 33%
🌐 JavaScript — 26%
🧩 TypeScript — 22%
🎨 HTML/CSS — 16%
Важная оговорка: это не «все программисты мира», а преимущественно аудитория JetBrains. PyCharm, IntelliJ, WebStorm — у компании сильные IDE именно для Python, Java и веб-стека. Так что выборка смещена в сторону этих языков. Например, Go и Rust-разработчики чаще сидят в VS Code, Swift-девелоперы — в Xcode.
Тем не менее, тренд понятен: Python уверенно держится в топе благодаря AI/ML и автоматизации. 41% Python-разработчиков в опросе используют язык для машинного обучения.
Другие находки:
🔘 85% используют AI-инструменты для кода
🔘 TypeScript, Rust и Go — лидеры по потенциалу роста
🔘 PHP и Ruby продолжают снижаться
Для более объективной картины стоит смотреть несколько источников: Stack Overflow Survey, TIOBE, RedMonk, GitHub Octoverse. Но то, что Python стабильно в топ-3 везде — факт.
@zen_of_python
Топ языков:
🐍 Python — 35%
☕️ Java — 33%
🌐 JavaScript — 26%
🧩 TypeScript — 22%
🎨 HTML/CSS — 16%
Важная оговорка: это не «все программисты мира», а преимущественно аудитория JetBrains. PyCharm, IntelliJ, WebStorm — у компании сильные IDE именно для Python, Java и веб-стека. Так что выборка смещена в сторону этих языков. Например, Go и Rust-разработчики чаще сидят в VS Code, Swift-девелоперы — в Xcode.
Тем не менее, тренд понятен: Python уверенно держится в топе благодаря AI/ML и автоматизации. 41% Python-разработчиков в опросе используют язык для машинного обучения.
Другие находки:
Для более объективной картины стоит смотреть несколько источников: Stack Overflow Survey, TIOBE, RedMonk, GitHub Octoverse. Но то, что Python стабильно в топ-3 везде — факт.
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍2👎1🏆1
Команда urllib3 столкнулась с неприятным открытием: механизм DeprecationWarning в Python фактически не работает. Библиотека три года предупреждала об устаревших API — через документацию, changelog и встроенные предупреждения. В версии 2.6.0 эти методы удалили. И всё сломалось.
Что произошло: после релиза посыпались баг-репорты от Kubernetes-клиента, Fastly, Airflow и других крупных проектов. Разработчики были в шоке — никто не видел предупреждений и не знал, что API исчезнет. Команде urllib3 пришлось срочно откатывать изменения и возвращать удалённые методы.
Почему так вышло: DeprecationWarning в Python по умолчанию отключён. Интерпретатор просто игнорирует эти предупреждения, если разработчик явно не включил их показ. В итоге API годами кричал о своей устарелости, но его никто не слышал.
Какие есть варианты:
🔘 Использовать UserWarning вместо DeprecationWarning — он не игнорируется по умолчанию
🔘 Делать более частые мажорные релизы по SemVer, как в криптографических библиотеках
🔘 Менять культуру работы с предупреждениями в экосистеме — но это долгий путь
Вывод для авторов библиотек: если полагаетесь только на стандартные предупреждения — велика вероятность, что их никто не увидит до момента, пока код не сломается.
@zen_of_python
Что произошло: после релиза посыпались баг-репорты от Kubernetes-клиента, Fastly, Airflow и других крупных проектов. Разработчики были в шоке — никто не видел предупреждений и не знал, что API исчезнет. Команде urllib3 пришлось срочно откатывать изменения и возвращать удалённые методы.
Почему так вышло: DeprecationWarning в Python по умолчанию отключён. Интерпретатор просто игнорирует эти предупреждения, если разработчик явно не включил их показ. В итоге API годами кричал о своей устарелости, но его никто не слышал.
Какие есть варианты:
Вывод для авторов библиотек: если полагаетесь только на стандартные предупреждения — велика вероятность, что их никто не увидит до момента, пока код не сломается.
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
Tproger
Обновление urllib3 доказало, что DeprecationWarning мертв. Python-экосистема его просто не видит — Tproger
urllib3 показал, что DeprecationWarning не работает: Python игнорирует устаревшие API, из-за чего ломаются даже крупные проекты
❤4🗿4👍1😱1
Python's random.seed() игнорирует знак числа — и это не баг
Андрей Карпати наткнулся на неочевидное поведение:
➡️ Как обнаружилось
Карпати работал над nanochat и хотел использовать знак seed'а для разделения train/test данных. Получил баг: train и test оказались идентичными.
➡️ Почему так
В исходниках CPython (
Знак просто отбрасывается.
➡️ Баг или фича?
Формально — не баг. Документация гарантирует только то, что одинаковый seed даст одинаковую последовательность. Но не гарантирует, что разные seed'ы дадут разные последовательности.
Карпати считает это ошибкой дизайна: знаковый бит мог бы удвоить пространство seed'ов. Простое решение:
➡️ Что дальше
🔘 Не полагаться на отрицательные seed'ы как на «другие»
🔘 В NumPy отрицательные seed'ы вызывают ошибку — там строже
🔘 Открыт issue на GitHub для обновления документации
@zen_of_python
Андрей Карпати наткнулся на неочевидное поведение:
random.seed(5) и random.seed(-5) дают одинаковую последовательность случайных чисел.Карпати работал над nanochat и хотел использовать знак seed'а для разделения train/test данных. Получил баг: train и test оказались идентичными.
В исходниках CPython (
_randommodule.c, строка 321) явно вызывается abs():// "This algorithm relies on the number being unsigned"
n = PyNumber_Absolute(arg);
Знак просто отбрасывается.
Формально — не баг. Документация гарантирует только то, что одинаковый seed даст одинаковую последовательность. Но не гарантирует, что разные seed'ы дадут разные последовательности.
Карпати считает это ошибкой дизайна: знаковый бит мог бы удвоить пространство seed'ов. Простое решение:
n -> 2*abs(n) + int(n < 0).import random
random.seed(42)
print(random.random()) # 0.6394267984578837
random.seed(-42)
print(random.random()) # 0.6394267984578837
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤3😱1
Kreuzberg v4 — вышла новая версия библиотеки для извлечения текста, таблиц и метаданных из 56+ форматов.
Была на Python, теперь переписана на Rust, в 5-15 раз легче конкурентов, есть готовые биндинги под популярные языки. Есть настоящий async без GIL и стриминг для гигабайтных файлов.
Главное: 16–31 MB полная установка против 146 MB – 9,7 GB у Unstructured/Docling/MarkItDown. Также в новой версии встроили эмбеддинги (FastEmbed + ONNX), семантический чанкинг, определение 68 языков и MCP-сервер для Claude Desktop.
Установка для Python:
📎 GitHub: https://github.com/kreuzberg-dev/kreuzberg
На картинке сравнение с альтернативами.
@zen_of_python
Была на Python, теперь переписана на Rust, в 5-15 раз легче конкурентов, есть готовые биндинги под популярные языки. Есть настоящий async без GIL и стриминг для гигабайтных файлов.
Главное: 16–31 MB полная установка против 146 MB – 9,7 GB у Unstructured/Docling/MarkItDown. Также в новой версии встроили эмбеддинги (FastEmbed + ONNX), семантический чанкинг, определение 68 языков и MCP-сервер для Claude Desktop.
Установка для Python:
pip install kreuzberg
На картинке сравнение с альтернативами.
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Python 3.15.0a3 — третья альфа уже доступна, всё по графиу релизов, только что выложили.
До беты ещё полгода, но уже есть интересное.
🔘 PEP 799 — встроенный sampling profiler: высокочастотный, низкий overhead, отдельный пакет для профилирования
🔘 PEP 686 — UTF-8 теперь дефолтная кодировка (наконец-то!)
🔘 PEP 782 — новый C API PyBytesWriter для создания bytes-объектов
🔘 Больше предложений по фиксам в сообщениях об ошибках (см. скриншот)
Таймлайн
🔘 Альфа 4 выйдет 13 января 2026
🔘 Бета: 5 мая 2026
🔘 RC: 28 июля 2026
Напоминание: альфа-релизы не для продакшна. Фичи могут измениться или исчезнуть до RC. Но посмотреть уже очень интересно, конечно.
@zen_of_python
До беты ещё полгода, но уже есть интересное.
Таймлайн
Напоминание: альфа-релизы не для продакшна. Фичи могут измениться или исчезнуть до RC. Но посмотреть уже очень интересно, конечно.
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2
Astral выпустили ty — type checker для Python, который в 10-60x быстрее mypy и Pyright
Astral — это те ребята, которые сделали uv и Ruff. Теперь у них полный тулчейн для Python: пакеты, линтинг, форматирование и type checking — всё на Rust, всё безумно быстрое.
Что такое ty
Type checker + language server. Альтернатива mypy, Pyright и Pylance. Написан на Rust, спроектирован с нуля под инкрементальность — пересчитывает только то, что изменилось.
Скорость
🔘 Без кэша: 10-60x быстрее mypy и Pyright
🔘 В редакторе после правки файла в PyTorch: 4.7ms (Pyright — 386ms, Pyrefly — 2.38 сек)
🔘 Это 80x и 500x разница соответственно
Что умеет
🔘 First-class intersection types, продвинутый type narrowing, reachability analysis
🔘 Диагностики как у Rust-компилятора — показывает контекст из нескольких файлов, объясняет почему ошибка и как починить
🔘 Полноценный LSP: Go to Definition, Rename, Auto-Complete, Auto-Import, Inlay Hints
Как попробовать
Или VS Code extension: ищите «ty» в маркетплейсе.
Сейчас Beta — команда Astral уже использует его в продакшне. Stable планируется в следующем году. В планах — поддержка Pydantic, Django и type-aware линтинг в связке с Ruff.
📎 GitHub, пост в блоге, на видео демо скорости работы
@zen_of_python
Astral — это те ребята, которые сделали uv и Ruff. Теперь у них полный тулчейн для Python: пакеты, линтинг, форматирование и type checking — всё на Rust, всё безумно быстрое.
Что такое ty
Type checker + language server. Альтернатива mypy, Pyright и Pylance. Написан на Rust, спроектирован с нуля под инкрементальность — пересчитывает только то, что изменилось.
Скорость
Что умеет
Как попробовать
uv tool install ty@latest
Или VS Code extension: ищите «ty» в маркетплейсе.
Сейчас Beta — команда Astral уже использует его в продакшне. Stable планируется в следующем году. В планах — поддержка Pydantic, Django и type-aware линтинг в связке с Ruff.
@zen_of_python
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13❤3
Программисты из Tproger подготовили для вас новогоднее бинго. Заканчивайте работу, пора позалипать на этот шедевр и найти все пасхалки.
@zen_of_python
@zen_of_python
Tproger
НОВОГОДНЕЕ БИНГО v2000
Заполни всё поле и узнай свою судьбу в новом году!
🔥1😍1
Clean Architecture в Python: не догма, а инструмент — разбор от разработчика с 30-летним стажем
Макс Кирхофф взял интервью у Сэма Кина — автора книги «Clean Architecture with Python». Сэм прошёл путь от стартапов до AWS и делится практическим подходом к архитектуре.
Ключевые моменты
🔘 Clean Architecture — не «всё или ничего», а набор принципов под твой контекст
🔘 Главная ценность — грамотное управление зависимостями и чёткая доменная модель
🔘 Хорошая архитектура = тестируемый код (связь прямая)
🔘 Бонус: чистая архитектура упрощает работу с AI-ассистентами при написании кода
Почему важно
Python любят за прагматику — и можно сохранить её, не скатываясь в спагетти-код. Архитектурные принципы адаптируются, а не навязываются.
📎 Видео на YouTube или в этом посте
@zen_of_python
Макс Кирхофф взял интервью у Сэма Кина — автора книги «Clean Architecture with Python». Сэм прошёл путь от стартапов до AWS и делится практическим подходом к архитектуре.
Ключевые моменты
Почему важно
Python любят за прагматику — и можно сохранить её, не скатываясь в спагетти-код. Архитектурные принципы адаптируются, а не навязываются.
@zen_of_python
Media is too big
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Весь год вы носили футболки и джинсы… Хватит!
Заглядывайте к нам в виртуальную примерочную и выбирайте себе идеальный скин для встречи Нового года.
Осторожно, эти наряды могут наповал сразить ваших коллег…
Реклама
Заглядывайте к нам в виртуальную примерочную и выбирайте себе идеальный скин для встречи Нового года.
Осторожно, эти наряды могут наповал сразить ваших коллег…
Реклама
👍4🤣3❤1
Tryolabs опубликовали 11-й ежегодный топ Python-библиотек
Команда перелопатила сотни проектов и отобрала те, что реально полезны в продакшене. Критерии: практическая польза (не хайп), активная поддержка, понятная ценность для разработчика. AI-библиотек могло быть 90%, но список специально разделили на две части.
➡️ Категория «Не ИИ»
0️⃣ ty — тайпчекер на Rust от Astral (авторы ruff и uv). Инкрементальный анализ на уровне функций — меняешь одну функцию, перепроверяется только она
1️⃣ complexipy — измеряет когнитивную сложность кода (не цикломатическую). Есть GitHub Action, pre-commit хук и расширение для VS Code
3️⃣ Kreuzberg — извлекает данные из 50+ форматов, работает на Rust, биндинги для Python/TS/Ruby/Go. Есть CLI, REST API и MCP-сервер
3️⃣ throttled-py — rate limiting с пятью алгоритмами (Fixed Window, Token Bucket, GCRA и др.), поддержка Redis и async
4️⃣ httptap — waterfall-визуализация HTTP-запросов: DNS, TLS handshake, время ответа — всё по фазам
5️⃣ fastapi-guard — security-мидлварь для FastAPI: IP-фильтры, геоблокировка, детект SQL-инъекций
6️⃣ modshim — оверлей модификаций поверх чужих модулей без monkey-patching и форков
7️⃣ Spec Kit — спецификации как источник истины для AI-ассистентов. Пишешь spec → AI генерит код по плану, а не угадывает (и всё же что-то про ИИ — прим. ред.)
8️⃣ skylos — поиск мёртвого кода + детект уязвимостей, включая паттерны vibe-coded кода
9️⃣ FastOpenAPI — автогенерация OpenAPI-документации для Flask, Falcon, Tornado, Django и ещё 4 фреймворков
➡️ Категория «AI/ML/Data»
0️⃣ MCP Python SDK + FastMCP — стандарт подключения LLM к внешним данным (Anthropic)
1️⃣ TOON — Token-Oriented Object Notation, JSON-like, но YAML-стиль для вложенности + CSV-формат для массивов. Экономия 40-60% токенов, заголовки с длиной помогают LLM валидировать структуру
3️⃣ Deep Agents — агентный фреймворк с planning через write_todos/read_todos, файловой системой (ls, read_file, edit_file), спавном субагентов
3️⃣ smolagents — агенты в ~1000 строк кода. LLM пишет действия как Python, а не JSON → на 30% меньше шагов на бенчмарках. Поддержка любых LLM, E2B/Docker/WASM sandbox
4️⃣ LlamaIndex Workflows — event-driven архитектура: степы + события вместо DAG. Async-first, автовывод типов из аннотаций, стриминг результатов, чекпоинты для возобновления
5️⃣ Batchata — единый интерфейс для batch API Anthropic/OpenAI/Gemini. Экономия 50%, лимиты по стоимости, dry-run для оценки расходов, Pydantic-валидация выходов
6️⃣ MarkItDown — PDF/DOCX/PPTX/Excel/HTML/аудио → Markdown. Сохраняет структуру (заголовки, таблицы, списки)
7️⃣ Data Formulator — визуализация через natural language + drag-n-drop. Указываешь поля которых ещё нет («profit_margin») → AI генерит трансформацию
8️⃣ LangExtract — извлечение структурированных данных с точной привязкой к позиции в тексте (character offset). Критично для медицины/юридики. Few-shot, чанкинг для длинных документов, HTML-визуализация
9️⃣ GeoAI — мост между PyTorch/Transformers и геоданными. Поиск спутниковых снимков → подготовка датасета → обучение → инференс → визуализация через Leafmap
@zen_of_python
Команда перелопатила сотни проектов и отобрала те, что реально полезны в продакшене. Критерии: практическая польза (не хайп), активная поддержка, понятная ценность для разработчика. AI-библиотек могло быть 90%, но список специально разделили на две части.
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍11❤6✍2
pyreqwest — новый HTTP-клиент на Rust для Python. GIL-free, HTTP/2 из коробки, sync и async с одинаковым API. Автор — тот же разработчик, который открыл issue #3215 в httpx о 10x просадке производительности при конкурентных запросах.
Зачем переходить с httpx
httpx/httpcore имеют давние проблемы с connection pooling — при 20 конкурентных запросах httpx в 10+ раз медленнее aiohttp. Эти баги висят годами. pyreqwest решает их на уровне архитектуры, потому что connection pool реализован на Rust.
➡️ Если httpx работает — можно не трогать. Но в высоконагруженных системах он станет бутылочным горлышком.
Фичи
🔘 HTTP/1.1 и HTTP/2 (у aiohttp нет HTTP/2)
🔘 Автодекомпрессия: zstd, gzip, brotli, deflate
🔘 TLS через rustls
🔘 Connection pooling, стриминг, multipart
🔘 Куки, прокси, редиректы, таймауты
🔘 Полные type hints, zero Python-зависимостей
🔘 Встроенный мок для тестов + подключение к ASGI напрямую
Быстрый старт:
📎 Код на GitHub
@zen_of_python
Зачем переходить с httpx
httpx/httpcore имеют давние проблемы с connection pooling — при 20 конкурентных запросах httpx в 10+ раз медленнее aiohttp. Эти баги висят годами. pyreqwest решает их на уровне архитектуры, потому что connection pool реализован на Rust.
Фичи
Быстрый старт:
# uv add pyreqwest
from pyreqwest.client import ClientBuilder, SyncClientBuilder
async def example_async():
async with ClientBuilder().error_for_status(True).build() as client:
response = await client.get("https://httpbun.com/get").query({"q": "val"}).build().send()
print(await response.json())
def example_sync():
with SyncClientBuilder().error_for_status(True).build() as client:
print(client.get("https://httpbun.com/get").query({"q": "val"}).build().send().json())
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1
Вышел Gazetteer — офлайн геокодер на Python, который не врёт на границах
Небольшое напоминание, зачем это вообще нужно:
➡️ Reverse geocoding — когда есть координаты, а нужно понять что там: страна, регион, город. Нужно для аналитики доставки, логистики, геотаргетинга, обработки GPS-логов. Проблема: большинство офлайн-решений ищут ближайшую точку (nearest-neighbor). У границ это ломается — ближайший город может быть в другой стране.
Gazetteer проверяет, в какой полигон реально попадает координата. KD-Tree для быстрого отсева + валидация вхождения в polygon.
Характеристики
🔘 210+ стран, 145 000+ административных границ
🔘 10 000 координат за <2 секунды (<0,4 мс на точку)
🔘 Single-process и multiprocessing
🔘 Без внешних API — никаких лимитов и платежей
🔘 Автор говорит, что начинал как toy project, но оказалось production-ready.
📎 Код на GitHub, документация на сайте
@zen_of_python
Небольшое напоминание, зачем это вообще нужно:
Gazetteer проверяет, в какой полигон реально попадает координата. KD-Tree для быстрого отсева + валидация вхождения в polygon.
Характеристики
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7
Servy — свежий проект для запуска Python-скриптов (на самом деле не только Python) как Windows-сервисов без боли
Проблема: нужно, чтобы Python-скрипт работал в фоне как сервис Windows: стартовал при загрузке, перезапускался при падении, писал логи. Стандартный sc работает только с приложениями, специально написанными как сервисы, а pythonw.exe + Task Scheduler — костыль без нормального мониторинга.
Решение: Servy. Указываешь путь к Python, скрипт, аргументы, рабочую директорию, env-переменные → Install → готово. Есть GUI для тех, кто не любит CLI.
Что умеет
🔘 Логирование stdout/stderr с ротацией (по размеру и дате)
🔘 Health checks + автоперезапуск при падении
🔘 Мониторинг CPU/RAM в реальном времени
🔘 Уведомления о падениях
🔘 Pre/post-launch хуки
🔘 Экспорт/импорт конфигов
Установка
📎 Код на GitHub, пример для Python, на видео демо
@zen_of_python
Проблема: нужно, чтобы Python-скрипт работал в фоне как сервис Windows: стартовал при загрузке, перезапускался при падении, писал логи. Стандартный sc работает только с приложениями, специально написанными как сервисы, а pythonw.exe + Task Scheduler — костыль без нормального мониторинга.
Решение: Servy. Указываешь путь к Python, скрипт, аргументы, рабочую директорию, env-переменные → Install → готово. Есть GUI для тех, кто не любит CLI.
Что умеет
Установка
winget install servy
choco install -y servy
scoop install servy
@zen_of_python
Media is too big
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3