Рубрики
Без рубрики

Как контролировать веб-приложения Python

Узнайте, как добавить мониторинг в веб-приложение Python с помощью размещенной службы мониторинга, такой как Rollbar.

Автор оригинала: Matt Makai.

Быстрый способ проверить наличие ошибок и проблем в вашей операционной Веб-приложение 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:

Активация нашей виртуальной среды Python в командной строке.

Помните, что вам нужно активировать свой 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 должен запуститься и отобразить несколько строк вывода.

Запустить локальный сервер разработки Bottle.

Попробуйте получить доступ к URL-адресу с путем, содержащим только буквенные символы и дефисы, например localhost: 8080/hello-world/.

Тестирование в / hello-world / возвращает ответ HTTP 200.

Приложение успешно отобразило “hello-world”, но что, если мы попробуйте URL-адрес, который помимо буквенных символов содержит числа, такие как localhost: 8080/fullstackpython123/?

Мы получаем ошибку 500 при добавлении чисел в URL.

Ошибка HTTP 500. Это определенно не лучший пользовательский опыт.

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

Пора изменить наш код, чтобы добавить Rollbar для сообщения об ошибках.

Мониторинг ошибок с помощью Rollbar

Перейдите на главную страницу Rollbar в своем браузере чтобы добавить свой инструмент в наше приложение Bottle.

Домашняя страница Rollbar в веб-браузере Chrome.

Нажмите кнопку «Зарегистрироваться» в правом верхнем углу. Введите свой адрес электронной почты, имя пользователя и пароль, которые вы хотите указать на странице регистрации.

Введите данные своей учетной записи на странице регистрации.

После страницы регистрации вы увидите процесс адаптации, где вы можете введите название проекта и выберите язык программирования. Для проекта введите имя в “Full Stack Python”, затем выберите, что вы отслеживаете Приложение Python.

Создайте новый проект с именем «Battlegrounds» и выберите 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

Вернувшись в веб-браузер, нажмите кнопку «Готово! Перейти на панель управления».

Если о событии еще не было сообщено, мы увидим такой экран ожидания один:

Ожидание данных на панели управления Rollbar.

Убедитесь, что ваш сервер разработки Bottle запущен, и попробуйте перейти на localhost: 8080/fullstackpython123/. Ошибка сервера 500 сразу отображается на панели управления:

Просмотр 500 ошибок, зарегистрированных на панели управления Rollbar.

Мы даже получаем электронное письмо с ошибкой (которое также можно отключить, если вы не хочу получать электронные письма о каждой ошибке):

Электронное письмо с отчетом об ошибке Rollbar.

Отлично, всего несколько строк кода, теперь у нас есть отчеты для приложения Bottle. ошибки для любого пользователя, который работает с нашим приложением.

Что теперь?

Мы только что узнали, как обнаруживать и обрабатывать ошибки с помощью Rollbar в качестве размещенного платформа мониторинга на простом примере Применение бутылки. Далее вы захотите добавить мониторинг в более сложные веб-приложения, включая те, которые используют Django или Flask. Вы также можете попробуйте более продвинутые функции Rollbar, чтобы:

Есть еще много чего узнать в области веб-разработка и развертывания, так что продолжайте учиться, читая о веб-фреймворках. Вы также можете узнать больше об интеграции Rollbar с приложениями Python через их документацию по Python .

Вопросов? Дай мне знать через запрос на выпуск GitHub в репозитории Full Stack Python , в Твиттере @fullstackpython или @mattmakai .

Вы видите опечатку, проблему с синтаксисом или просто что-то непонятное в этом Сообщение блога? Вилка исходный код этой страницы на GitHub и отправьте запрос на перенос с исправлением или отправьте сообщение о проблеме на GitHub .