Быстрый способ проверить наличие ошибок и проблем в вашей операционной Веб-приложение Python должно быть одним из многих отличные размещенные инструменты мониторинга.
Давайте научимся быстро добавлять мониторинг Rollbar в веб-приложение, чтобы визуализировать, когда наше приложение работает правильно и когда есть проблемы. В этом уроке бутылка будет использоваться в качестве пример веб-фреймворка вместе с Rollbar в качестве служба мониторинга, но вы также можете проверить список других инструментов на странице мониторинга.
Наши инструменты
Мы можем использовать Python 2 или 3 для создания этого учебное пособие, но Python 3 настоятельно рекомендуется для всех новых приложений. Python 3.6.2 был использован для создания этого учебника. Мы также будем использовать следующие зависимости приложений во всем сообщение:
- pip и
- virtualenv , который уже установлен
- с Python 3, чтобы установить и изолировать библиотеки Bottle и Rollbar
- из других ваших проектов
- Рамка для бутылок,
- версия 0.12.13
- Мониторинг pyrollbar
- библиотека приборов,
- версия 0.13.13
- в приложениях для бутылок, чтобы pyrollbar мог сообщать обо всех ошибках
- бесплатная учетная запись Rollbar , на которую мы отправим сообщение об ошибке
- данные и просмотреть их, когда они будут захвачены
Если вам нужна помощь в получении настроена среда разработки перед запуском этого кода взгляните на это руководство по настройке Python 3 и Bottle в Ubuntu 16.04 LTS.
Весь код в этом сообщении в блоге доступен с открытым исходным кодом по лицензии MIT. на GitHub в разделе каталог monitor-python-bottle-apps репозитория blog-code-examples . Используйте исходный код и злоупотребляйте им для своих собственных приложений.
Установка зависимостей
Создайте новую виртуальную среду для этого проекта, используя следующие команда. Я рекомендую хранить отдельный каталог для виртуальных машин под ~/Envs/
, чтобы вы знали, где находятся все виртуальные объекты вашего проекта.
python3 -m venv monitorpython
Активируйте virtualenv с помощью сценария оболочки activate
:
source monitorpython/bin/activate
Командная строка изменится после активации virtualenv:
Помните, что вам нужно активировать свой virtualenv в каждом новом терминале окно, в котором вы хотите использовать virtualenv для запуска проекта.
Теперь мы можем установить Bottle и Rollbar в активированный virtualenv.
pip install bottle==0.12.13 rollbar==0.13.13
Найдите вывод, подобный следующему, чтобы подтвердить зависимости установлены правильно.
Installing collected packages: bottle, urllib3, certifi, idna, chardet, requests, six, rollbar Running setup.py install for bottle ... done Running setup.py install for rollbar ... done Successfully installed bottle-0.12.13 certifi-2017.7.27.1 chardet-3.0.4 idna-2.6 requests-2.18.4 rollbar-0.13.13 six-1.11.0 urllib3-1.22
Наши зависимости готовы к работе, поэтому теперь мы можем создавать наше веб-приложение Python.
Наше веб-приложение Python
Создайте папку для своего проекта с именем monitor-python-apps
. cd
в папку, а затем создайте файл с именем app.py
со следующими код.
import bottle import os import re from bottle import route, template TEMPLATE_STRING = """Full Stack Python Web App {{ h1 }}
""" MIN_MSG_LENGTH = 2 @route("//") def show_message(msg): """Display a message if the msg value is greater than 2 characters in the path. """ valid_length = len(msg) >= MIN_MSG_LENGTH valid_name = re.match('^[a-z\-]+$', msg.lower()) is not None if valid_length and valid_name: return template(TEMPLATE_STRING, h1=msg) else: error_msg = "Sorry, only alpha characters and hyphens allowed." raise Exception(error_msg) if __name__ == "__main__": bottle.run(host='localhost', port=8080)
В приведенном выше коде приложения есть несколько стандартных импортированных бутылок, поэтому мы можем создать веб-приложение Bottle и обрабатывать маршруты URL.
У нас есть одна функция, show_message
, которая обрабатывает одну бутылку URL-маршрут. show_message
проверяет, содержит ли путь URL только буквы символы и дефисы для отображения сообщения. Если сообщение проходит условия, тогда страница отображается с этим сообщением в элементе h1
. Если msg
не проходит проверку условия, тогда выбрасывается исключение, что разрешены только буквенные символы и дефисы.
Сохраните app.py
, и мы сможем запустить наш код. Выполните app.py
с помощью python
команду следующим образом (убедитесь, что ваш virtualenv все еще активирован в терминал, на котором вы запускаете эту команду):
python app.py
Сервер разработки Bottle должен запуститься и отобразить несколько строк вывода.
Попробуйте получить доступ к URL-адресу с путем, содержащим только буквенные символы и дефисы, например localhost: 8080/hello-world/.
Приложение успешно отобразило “hello-world”, но что, если мы попробуйте URL-адрес, который помимо буквенных символов содержит числа, такие как localhost: 8080/fullstackpython123/?
Ошибка HTTP 500. Это определенно не лучший пользовательский опыт.
Ошибка 500 очевидна для нас прямо сейчас, потому что мы тестирование приложения локально во время разработки. Однако что происходит когда приложение развернуто и пользователь получает ошибку в своем собственном веб-сайте браузер? Они, скорее всего, уйдут из-за разочарования, и вы никогда не знать, что произошло, если вы не добавите отслеживание ошибок и приложение мониторинг.
Пора изменить наш код, чтобы добавить Rollbar для сообщения об ошибках.
Мониторинг ошибок с помощью Rollbar
Перейдите на главную страницу Rollbar в своем браузере чтобы добавить свой инструмент в наше приложение Bottle.
Нажмите кнопку «Зарегистрироваться» в правом верхнем углу. Введите свой адрес электронной почты, имя пользователя и пароль, которые вы хотите указать на странице регистрации.
После страницы регистрации вы увидите процесс адаптации, где вы можете введите название проекта и выберите язык программирования. Для проекта введите имя в “Full Stack Python”, затем выберите, что вы отслеживаете Приложение Python.
Нажмите кнопку «Продолжить» внизу, чтобы двигаться дальше. Следующий экран показывает нам несколько инструкций по добавлению мониторинга в Python применение.
Давайте изменим наш код бутылки, чтобы позволить Rollbar собирать и агрегировать ошибки, которые появляются в нашем приложении. Измените app.py
, чтобы включить следующие выделенные строки.
import bottle import os import re from bottle import route, template from rollbar.contrib.bottle import RollbarBottleReporter TEMPLATE_STRING = """Full Stack Python Web App {{ h1 }}
""" MIN_MSG_LENGTH = 2 ROLLBAR_SECRET = os.environ.get("ROLLBAR_SECRET") rb_monitor = RollbarBottleReporter(access_token=ROLLBAR_SECRET, environment='production') bottle.install(rb_monitor) @route("//") def show_message(msg): """Display a message if the msg value is greater than 2 characters in the path. """ valid_length = len(msg) >= MIN_MSG_LENGTH valid_name = re.match('^[a-z\-]+$', msg.lower()) is not None if valid_length and valid_name: return template(TEMPLATE_STRING, h1=msg) else: error_msg = "Sorry, only alpha characters and hyphens allowed." raise Exception(error_msg) if __name__ == "__main__": bottle.run(host='localhost', port=8080)
Новый импорт из rollbar.contrib.bottle import RollbarBottleReporter
это наш канал между приложением и сервером Rollbar. полоса прокрутки
это библиотека, которую мы установили ранее.
Токен ROLLBAR_SECRET
необходимо установить в переменной среды. Сохраните и выйдите из app.py
. Выполните следующую команду в терминале, где находится ваш virtualenv активирован:
export ROLLBAR_SECRET='token here'
Если вы не уверены, какой у вас секретный токен, его можно найти на экран подключения Rollbar.
Обратите внимание, что я обычно храню все свои переменные среды в .env
файл и используйте template.env в качестве шаблона для того, что я должен заполнить в .env
. .env
может быть вызван с терминала с помощью .env
команда. Обязательно никогда не фиксировать ваши секретные токены в репозиторий системы управления версиями, особенно если репозиторий публичный!
После экспорта ключа ROLLBAR_SECRET
в качестве переменной среды мы можем проверить, что Rollbar работает, когда мы запускаем наше приложение. Запустить его теперь с использованием python
:
python app.py
Вернувшись в веб-браузер, нажмите кнопку «Готово! Перейти на панель управления».
Если о событии еще не было сообщено, мы увидим такой экран ожидания один:
Убедитесь, что ваш сервер разработки Bottle запущен, и попробуйте перейти на localhost: 8080/fullstackpython123/. Ошибка сервера 500 сразу отображается на панели управления:
Мы даже получаем электронное письмо с ошибкой (которое также можно отключить, если вы не хочу получать электронные письма о каждой ошибке):
Отлично, всего несколько строк кода, теперь у нас есть отчеты для приложения Bottle. ошибки для любого пользователя, который работает с нашим приложением.
Что теперь?
Мы только что узнали, как обнаруживать и обрабатывать ошибки с помощью Rollbar в качестве размещенного платформа мониторинга на простом примере Применение бутылки. Далее вы захотите добавить мониторинг в более сложные веб-приложения, включая те, которые используют Django или Flask. Вы также можете попробуйте более продвинутые функции Rollbar, чтобы:
- настройте правила для группировки ошибок
- отлаживать и отслеживать проблемы развертывания
- сортировать и просматривать ошибки по пользователям
Есть еще много чего узнать в области веб-разработка и развертывания, так что продолжайте учиться, читая о веб-фреймворках. Вы также можете узнать больше об интеграции Rollbar с приложениями Python через их документацию по Python .
Вопросов? Дай мне знать через запрос на выпуск GitHub в репозитории Full Stack Python , в Твиттере @fullstackpython или @mattmakai .
Вы видите опечатку, проблему с синтаксисом или просто что-то непонятное в этом Сообщение блога? Вилка исходный код этой страницы на GitHub и отправьте запрос на перенос с исправлением или отправьте сообщение о проблеме на GitHub .