Простой Python. Современный стиль программирования (Любанович) - страница 161

• web2py (http://www.web2py.com/). Он работает примерно с тем же, с чем и django, только немного в другом стиле.

• 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 и, наконец, возвращался к одной из реляционных.

Другие веб-серверы 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.