Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 213

только немного в другом стиле.

 pyramid (http://www.pylonsproject.org/). Этот фреймворк появился из более ран-

ран-

него проекта pylons, с точки зрения функционала он похож на django.

 turbogears (http://turbogears.org/). Этот фреймворк поддерживает ORM, множе-

ство баз данных и несколько языков шаблонов.

 wheezy.web (http://pythonhosted.org/wheezy.web/). Этот более молодой фреймворк

оптимизирован для повышения производительности. Недавние исследования

показали, что он работает быстрее других.

Вы можете сравнить фреймворки с помощью онлайн-таблицы по адресу http://

bit.ly/web-frames.

Если вы хотите создать сайт, работающий с реляционной базой данных, вам

не обязательно пользоваться одним из этих крупных фреймворков. Можете вос-

пользоваться Bottle, Flask или каким-нибудь другим простым фреймворком и мо-

дулями работы с базами данных вроде SQLAlchemy, чтобы сгладить разногласия.

Далее вам нужно будет написать обычный код SQL вместо специфического кода

ORM, так как большинство разработчиков знают SQL, а не некий определенный

синтаксис ORM.

Кроме того, ничто не заставляет вас выбирать именно реляционную базу данных.

Если схема ваших данных может значительно изменяться — графы явно различа-

ются в разных рядах, — вам стоит выбрать базу данных, не имеющую схемы, вроде

баз данных NoSQL, которые мы рассматривали в разделе «Хранилища данных

NoSQL» главы 8. Однажды я работал над сайтом, который изначально хранил

данные в базе данных NoSQL, затем переключался на одну реляционную базу

данных, затем на другую реляционную базу данных, затем на другую базу данных

NoSQL и, наконец, возвращался к одной из реляционных.

276

Глава 9. Распутываем Всемирную паутину

Другие веб-серверы Python

Далее перечислены некоторые независимые WSGI-серверы, написанные на Python,

которые работают как Apache или Nginx и используют несколько процессов и/или

потоков (смотрите раздел «Конкуренция» главы 11) для обработки одновремен-

ных запросов:

 uwsgi (http://projects.unbit.it/uwsgi/);

 cherrypy (http://www.cherrypy.org/);

 pylons (http://www.pylonsproject.org/).

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

процессом, но избегают блокирования любым одиночным запросом:

 tornado (http://www.tornadoweb.org/);

 gevent (http://gevent.org/);

 gunicorn (http://gunicorn.org/).

О событиях я поговорю подробнее в разделе о конкуренции в главе 11.

Веб-сервисы и автоматизация

Только что мы рассмотрели традиционные веб-клиенты и серверные приложения,

потребляющие и генерирующие HTML-страницы. Всемирная паутина оказалась

мощным способом объединять приложения и данные во многих форматах, не толь-

ко HTML.

Модуль webbrowser

Начнем с небольшого сюрприза. Запустите сессию Python в окне терминала и вве-

дите следующую строку: