Как стать автором
Обновить

Комментарии 27

from conf import config as cfg

А сразу нельзя было нормально сделать? ;)
ЗЫ: пошел смотреть код, а там зачем-то import psutil в конфиге, *.pyc в репозитории.
html в python коде, конкатенация черезе '+', общий except, дальше не стал разбирать.
:(
и? для простого скрипта за два часа вполне.
Давайте тесты добавим, деплой и тд и тп. Только, зачем?
Это же простой скрипт.
Там такие мелочи и портят общее впечатление. Ну если уж подняли тему «скрипта за два часа», зачем тогда он на хабре?
Я думаю, что кому то он может пригодиться. Например, вам.
Мне точно нет, особенно с таким кодом.
А покажите код своих проектов, посмотрим — интересно.
Ну вот и подошли к ответу на критику — «Сперва добейся» (
Вообще то я редко пишу на python, стало интересно посмотреть на хороший код. Действительно хороший. Если есть что показать, посмотрю с удовольствием.

Далеко ходить не надо. В стандартной библиотеке отличный код

Инструментов мониторинга 100500, от простых до сложных. Если нужен мониторинг, то лучше взять готовое, проверенное решение, а не чей-то простой скрипт

Есть munin-monitoring.org и тоже на python и даже ля него есть exporter в Graphite
rSedoy Павел, поделитесь, как нужно делать конкатенацию строк на питоне? И почему? Откуда вы почерпнули это знание? Пользователям ведь хочется узнать не просто чьи-то оценки, а получить новые знания.
Я вот тут прочитал (но этому обоснованию пять лет, все могло поменяться), что использование плюса не имеет существенных недостатков по производительности, а скорее наоборот, в общем случае оптимальный выбор. ( stackoverflow.com/questions/12169839/which-is-the-preferred-way-to-concatenate-a-string-in-python )
Да про это уже много написано и без проблем находится через поиск, а в данном случае, нужна даже не конкатенация, а форматирование строк. Быстрый поиск дает хорошее описание способов, да еще и на русском языке ;) shultais.education/blog/python-f-strings
Сорри, оторвался от контекста, тут даже не форматирования, а использование шаблонизаторов, весь html код надо вынести в отдельные файлы и использовать jinja, вроде она чаще всего используется с flask'ом
Здесь согласен. Сегодня исправлю.

А что плохого в конкатенации посредством оператора '+'? Читабельность? Так, извините, во-первых, '+' работает быстрее других способов конкатенации строк в Python, а во-вторых, врядли


s = 'String {}'.format('bad')

читабельнее


python
s = 'String' + 'bad'
'''
Про python судить не берусь, но вот в .net конкатенацию через «+» стоит избегать из-за соображений производительности. Возможно, считается (как в c#), что string.fomat() выглядит эстетичнее.
# Python >= 3.6
w = 'bad'
s = f'String {w}'
# Python < 3.6
s = ''.join([
    'String ',
    'bad'
])


На stackoverflow говорят, что вариант с join — самый быстрый.
да, поправим.
Статья обновлена и дополнена с учетом замечаний в комментариях.
А я для этого пользуюсь dashboard.monitis.com
Там тоже есть какой то agent для линукса, который мониторит память, процессор, место на диске и т.д
Плохо только что уведомления о превышении лимитов там только в платной версии
По поводу try… except.
Из моего опыта .net: во всех учебниках, в том же Рихтере написано, что правила плохого тона — перехват самого общего эксепшна или всех сразу, так как перехват исключений в программе означает автоматом, что программист подразумевает возможность возникновения конкретных ошибок и их обрабатывает.
Единственное, что может быть правильно:
try
{
...
}
catch (Exception ex)
{
   // перекидываем общий эксепшн дальше по стеку
   throw;
}

В этом случае ошибка будет перекинута выше.

В этом скрипте на Windows при проверке свободного места на некоторых дисках вылетают разные ошибки из пакета psutil.
Как правильно реализовать перехват общего исключения на python?
Как я понял, просто try… except — это не правильно, даже если после try указать самый общий exception.
Как по мне, видно, что python не является основным язык программирования для автора статьи. Есть общая проблема — Ваш код — громоздкий.
1. mem_info.__len__(), ну ладно почему нет.
2. объявление списка в виде mem_info = list(), а не mem_info = [], имеет право на существование
3. импорт модулей, которые в дальнейшем нигде не используются, по типу datetime и platform? тоже мелочи
4. str.format('Active memory: {0} MB', mem.active) — в каждой строке нагромоздили. Не читабельно и чрезмерно.
5. Ваша избыточная функция get_blocks(зачем она?),
6. общая структура flask в github
Это только за минуту беглого просмотра.
Я понимаю, что Вы реализовали данную работу за пару часов, но она написана безграмотно. Это не плохо. Но соглашусь с комментарием(https://habrahabr.ru/post/345848/#comment_10593082) — мелочи портят восприятие.
Хороший код с pythonic way? Первые 100 страниц, Бретт Слаткин — Effective Python рекомендую, там подобные стилистические ошибки разбираются.
Заранее извиняюсь, если что не так.
Спасибо за содержательный ответ :)
Смело! Мне в целом статья понравилась! Я понимаю, что лучше можно всегда. Комментарии очень полезные.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории