Использование Pyramid для разработки веб-приложения Python WSGI на Ubuntu

Вступление

Веб-фреймворки – это быстрый и простой способ разработки веб-приложения. Почти каждый веб-фреймворк придерживается схемы программного обеспечения MVC, что расшифровывается как «Model, View, Controller» (модель-вид-контроллер). Это способ различить и разделить функции приложения, что также помогает упростить его конструкцию и позволяет изменять некоторые его компоненты независимо от остальных.

Pyramid – легкий фреймворк для разработки приложений Python. Он позволяет быстро создать и запустить веб-приложение. В целом, при необходимости он может выполнить весь каркас приложения в одном файле.

В данном руководстве речь пойдет об установке Pyramid на Ubuntu, а также о некоторых основных командах и процессах, которые помогают успешно и быстро запустить приложение на данном фреймворке.

Установка необходимых инструментов

Для начала нужно установить некоторые важные пакеты. Поскольку Pyramid является фреймворком Python, для запуска приложения понадобится версия Python.

Данное руководство использует Python 3. В зависимости от установленной версии Ubuntu Python может быть включен по умолчанию.

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

sudo apt-get update
sudo apt-get install python3-dev python3-setuptools

Также понадобится пакет virtualenv, который можно установить с помощью команды easy_install:

sudo easy_install virtualenv

Теперь все базовые компоненты, необходимые для работы Pyramid, установлены.

Создание среды приложения

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

Пакет virtualenv позволяет установить изолированную среду Python. Сначала необходимо создать виртуальную среду, а затем внутри нее установить файлы Pyramid.

Для начала перейдите в домашний каталог. В нем нужно создать каталог, в котором будут храниться файлы проекта:

cd ~
mkdir pyramid_sites
cd pyramid_sites

В данном каталоге создайте виртуальную среду – изолированное место, где можно установить инструменты и библиотеки Python, при этом не затрагивая инструменты системы.

virtualenv --no-site-packages env

Данная команда создаст в текущей папке каталог по имени env. В нем установлены файлы среды.

Активировать виртуальную среду можно с помощью этой команды:

source env/bin/activate

Это изменит командную строку, теперь она будет отображать имя виртуальной среды. Благодаря этому очень легко определить, активирована среда или нет. Чтобы дезактивировать среду, наберите:

deactivate

На данный момент отключать среду не нужно. Установите Pyramid внутри виртуальной среды, набрав:

easy_install pyramid

Это установит все необходимые файлы.

Создание приложения

Одним из основных преимуществ фреймворка Pyramid является его легкий вес. Каркас приложения можно создать при помощи всего одного файла.

Анализ конфигураций файла

Используя пример проекта Pyramid, создайте конфигурации однофайлового проекта; это будет простое приложение “hello world”, и оно понадобится исключительно для объяснения некоторых блоков конфигураций.

Сначала создайте каталог приложения.

mkdir ~/pyramid_sites/hello_world
cd ~/pyramid_sites/hello_world

В данном каталоге создайте файл application.py и внесите в него следующий блок кода:

nano application.py

from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Response
def hello_world(request):
return Response('<h1>Hello world!</h1>')
if __name__ == '__main__':
config = Configurator()
config.add_view(hello_world)
app = config.make_wsgi_app()
server = make_server('0.0.0.0', 8080, app)
server.serve_forever()

Чтобы понять как работает Pyramid, рассмотрите данный блок кода подробнее.

Вверху файла находятся операторы импорта:

from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Response

Первая строка импортирует функцию make_server, которая может создать простой веб-сервер при передаче приложения. Вторая и третья строки импортируют функции configurator и response.

Эти функции используются для подробной настройки параметров приложения и ответов на запросы соответственно.

Затем следует определение функции под названием hello_world:

def hello_world(request):
return Response('<h1>Hello world!</h1>')

Данная функция представляет так называемый “вид” приложения. Запомните: большинство фреймворков следуют парадигме MVC (модель, вид, контроллер). Функция, которая отвечает за вид, выполняет визуализацию текста, который будет передан обратно запрашивающему объекту.

В данном случае вызванная функция использует ранее импортированную функцию Response, которая передает значение клиенту. В простых приложениях реализация вида очень проста.

Далее следует основной код программы. Он начинается с общего соглашения python для вызова основной исполняемой части программы:

if __name__ == '__main__':

Данная строка указывает, что если запущен главный (“main”) файл (имеется ввиду, что он не импортирован и не вызван другим файлом), то необходимо выполнить следующие команды.

config = Configurator()
config.add_view(hello_world)
app = config.make_wsgi_app()
server = make_server('0.0.0.0', 8080, app)
server.serve_forever()

Первая строка создает переменную под названием config из объекта, созданного импортированной ранее функцией Configurator.

Следующая строка вызывает метод add_view данного объекта. Данный метод определяет вид, который может использовать приложение. Как можно видеть, сюда внесена определенная ранее функция hello_world. По сути, именно здесь данная функция внедряется как вид.

Следующая строка создает приложение WSGI, вызывая метод make_wsgi_app объекта config. Она использует атрибуты объекта (например, внесенный вид) для создания приложения.

Затем данное приложение передается импортированной функции make_server, чтобы создать объект, который может запустить веб-сервер для обслуживания приложения. Последняя строка запускает такой сервер.

Сохраните изменения и закройте файл.

Для запуска приложения нужно просто направить на него Python:

python application.py

Теперь попробуйте перейти на порт, указанный в конфигурациях (8080); должен появиться текст, внесенный в функцию view:

http://ip_адрес:8080

Создание приложения Pyramid с помощью скаффолдинга

В предыдущем примере все было создано в одном файле. Конечно, такой подход демонстрирует, насколько компактен и прост процесс создания приложения

Pyramid согласно модели MVC; тем не менее, это не всегда самый простой способ разработки.

Как и другие популярные фреймворки, Pyramid может использовать так называемый скаффолдинг (scaffolding) для быстрого создания сложных приложений. Для использования скаффолдинга нужен инструмент pcreate.

Вернитесь в каталог Pyramid и посмотрите, какие скаффолды доступны:

cd ~/pyramid_sites
pcreate -l

Available scaffolds:
alchemy: Pyramid SQLAlchemy project using url dispatch
starter: Pyramid starter project
zodb: Pyramid ZODB project using traversal

Первая опция создает проект с интеграцией SQL, вторая – базовый проект без сохраняемости (persistence) между экземплярами приложения, третья может создать приложение для запуска с помощью ZODB (при работе с Python 2).

Чтобы создать проект с помощью скаффолда, выберите шаблон и назовите проект:

pcreate -s starter first_project

Данная строка создает каталог с именем проекта; войдите в этот каталог и просмотрите созданные файлы:

cd first_project
ls

CHANGES.txt development.ini first_project MANIFEST.in production.ini README.txt setup.cfg setup.py

Здесь представлен достаточно большой набор файлов (по сравнению с примером предыдущего раздела). Файлы данного каталога, как правило, используются для конфигурирования. Сама программа в основном содержится в подпапке с именем проекта.

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

python setup.py develop

Это сконфигурирует приложение с помощью параметров файла development.ini.

Для обслуживания проекта введите следующее:

pserve development.ini

Посетите свой IP-адрес (не забудьте указать после него номер порта – 6543) – появится приложение по умолчанию.

Введите в терминал “Ctrl-C”, чтобы остановить веб-сервер.

Также в конфигурационном файле можно активировать отладочную панель, что предоставит дополнительную (и очень ценную) информацию о приложении.

Отредактируйте файл development.ini:

nano development.ini

В конце раздела [app:main] внесите следующие строки, которые позволят подключающемуся хосту просматривать отладочную панель:

[app:main] . . .
. . .
pyramid.includes =
pyramid_debugtoolbar
debugtoolbar.hosts = 0.0.0.0/0

Сохраните изменения и закройте файл. Теперь после перезагрузки сервера и веб-страницы справа появится панель.

pserve development.ini

На основе такой структуры можно создавать сложные приложения MVC.

Итоги

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

Кроме всего, Pyramid предоставляет огромное количество инструментов для разработки и тестирования приложений.

За дополнительной информацией можно обратиться к официальной документации Pyramid.

Tags: , , , , , , , , , ,

Добавить комментарий