
Интерактивный CLI-менеджер процессов MySQL на асинхронном Python
laenij 57 минут назад Интерактивный CLI-менеджер процессов MySQL на асинхронном Python Простой 3 мин 1.9K Python * MySQL * SQL * Аналитика При разработке проектов на небольших VPS часто возникает ситуация, когда процесс...
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
Значимый прорыв формирует отрасль ИИ: laenij 57 минут назад Интерактивный CLI-менеджер процессов MySQL на асинхронном Python Простой 3 мин 1. 9K Python * MySQL * SQL * Аналитика При разработке проектов на небольших VPS часто возникает ситуация, когда процесс mysqld загружает процессор на 100%. Обычно в такие моменты приходится заходить по SSH, открывать консоль бд и вручную вводить SHOW FULL PROCESSLIST;, чтобы найти тяжелый запрос и завершить его через KILL.
Если запросов много, делать это вручную через стандартный вывод не всегда удобно. Это легковесный интерактивный CLI - менеджер процессов, который работает на базе асинхронного драйвера aiomysql. Он опрашивает системную таблицу information_schema.
Технические детали
processlist и выводит текущую активность в терминал в виде таблицы, позволяя управлять потоками СУБД. Как устроена утилита Программа разделена на две параллельные асинхронные задачи: Фоновое чтение метаданных из базы данных с интервалом в 1. Неблокирующий перехват нажатий клавиш пользователя.
Для рендеринга интерфейса и автоматической очистки экрана используются стандартные ANSI-последовательности, что позволяет утилите работать плавно и без мерцания. Менеджер потребляет около 14 МБ оперативной памяти и практически не создает дополнительной нагрузки на центральный процессор, что делает его удобным для запуска на слабых серверах. ТестированиеДля проверки работы скрипта в базу данных были внесены тестовые процессы, симулирующие длительные тяжелые запросы.
Навигация по строкам осуществляется клавишами W (вверх) и S (вниз). Выбранная строка интерактивно подсвечивается инверсией цветов. При нажатии клавиши K скрипт отправляет команду на удаление потока.
Отраслевые последствия
ТерминалКак это работаетОсновная проблема большинства самописных скриптов мониторинга - они сами начинают нагружать СУБД, если опрашивать её слишком часто. Чтобы избежать этого, утилита не включает глобальные логи медленных запросов, а напрямую обращается к системной таблице метаданных. Для изоляции процессов ввода-вывода и интерфейса в коде используются асинхронные задачи.
Пока функция fetch_data ждет ответа от бд через await, управление передается функции listen_keyboard, которая проверяет буфер консоли Windows на наличие нажатых клавиш. Это исключает фризы и позволяет приложению мгновенно реагировать на команды пользователя. Как протестировать локально Если вы хотите запустить и проверить менеджер процессов, можно симулировать искусственную нагрузку.
Для этого достаточно создать тестовую бд и наполнить таблицу фейковыми процессами, которые будут имитировать длительное выполнение тяжелых запросов.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.





