Записи с тегом «python»

Web-разработка на Python. Ресурсы

Рускоязычное сообщество Python-разработчиков расширется с каждым годом. В прошедшем году немало успеха принес проект Ивана — Конференция «Exception». Достаточно много информации регулярно «подливают» авторы блогов о Python и веб-разработке. Хотелось бы еще обратить внимание на сообщества, где можно задать вопросы и найти себе партнеров для работы в сфере python и web. Итак ссылки:

  • Форумы по веб-разработке на python.com.ua — python.com.ua/forum .
  • Форум на softwaremaniac.org по Django .
  • Форумы на pydev.ru по веб — pydev.ru/forum.
  • Гугл-группа по Django — django-russian .
  • Гугл-группа по многим другим фреймворкам и библиотекам — webpython-ru .

 Еще ссылки на блоги и более специфичные сайты по разработке на Python можно найти на pydev.ru/links.

Обзор django-сайтов, которые у нас хостятся

Хотелось бы рассказать о наших достижениях на полях современных технологий по разработке сайтов.

На данный момент все больше вебмастеров и вебразработчиков интересуясь про поддержку хостинга django и rails приложений смелее разрабатывают на этой платформе новые сайты. И может они пока не блистают чем-то особым внешне, первые шаги навстречу новым технологиям делаются уверенно.

Сегодня мы сделаем краткий обзор нескольких сайтов, которые работают на базе веб-фреймворка Django. Вот список, с краткими пояснениями.

  • vepr.com.ua - Сайт украинского внедорожника "ВЕПР". По словам разработчиков работа еще не доделана, но мы видим уже вполне функциональный и информативный сайт. Начали обзор с него, т.к. сам по себе проект очень интересный. Любой автолюбитель не без интереса посмотрит фото и видео галерею.
  • rupy.ru - Сайт конференции разработчиков, использующих языки программирования Python и Ruby. Первая конференция прошла 10 февраля в Омске. В работе конференции принимали участие сорок восемь человек, в том числе гости из Новосибирска, Абакана, Екатеринбурга. Надеемся что конференция будет развиваться и привлекать новых людей в число разработчиков на Ruby и Python.
  • fact.kiev.ua - Сайт известного киевского издательства "Факт", работающего с 1997 года. На сайте есть как общая информация про издательство, так и регулярно обновляемый каталог выпускаемой продукции с хорошим поиском и сортировкой. Также есть регулярно обновляемый раздел со статьями.
  • kvant.net.ua - интернет-магазин с легким и простым интерфейсом.
  • unt-systems.com - Сайт компании, занимающейся разработкой и реализацией новых технологий. Сайт компании еще наполняется, но уже вполне можно можно понять род деятельности и общую информацию о компании.
  • gardi.com.ua - Сайт цветочной группы "Гарди", занимающей лидирующие позиции по производству тепличных цветов и горшечной продукции в Украине. Каталог продукции компании еще в стадии заполнения.
  • dina.com.ua - Сайт предприятия по производству трикотажных изделий. На сайте есть довольно полный каталог продукции.


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

Так что ждем Ваших приложений! Пишите смелее на Ruby и Python .  

Python-хостинг: издержки производства

Хостинг python приложений имеет некоторые нюансы, не всегда удобные и приятные для хостера. Мы уже больше года предоставляем python-хостинг и столкнулись с рядом особенностей. Да, не все в нашем мире идеально :-)

Вся суть в способах связки python-приложения с веб-сервером. С тех пор как php прочно вошел и закрепился в среде веб-разработчиков, его постоянно стали сравнивать с другими языками программирования, применимыми для написания веб-приложений. В том числе сравнивали и производительность. Естественно скорость работы php-парсера была высока по сравнению с perl-кодом, работающим через cgi. Да и вообще cgi стандарт себя уже изживал.

Поэтому серверные веб-технологии пошли двумя основными направлениями в плане сопряжения программной части с веб-сервером:

  1. разработка всяких mod_* — встроенных интерпретаторов в веб-сервер;
  2. переботка стандарта cgi с целью увеличения производительности (FastCGI);
Оба направления популярны и успешны по сей день, т.к. у каждого есть свои плюсы и минусы. Переходя на детали о Python, хочется сделать отдельную заметку общего плана.

В тредовой (thread) модели python есть такое понятие как Interpreter Lock. Это когда тред блокирует интерпретатор на определенное время (пока не выполнит операцию, выполнит определенное кол-во инструкций или не пройдет таймаут). В принципе этот метод разделения ресурсов вполне хорошо работает на практике. Но в случаем с хостингом есть свои нюансы...

Представте вполне реальную картину. Веб сервер (Apache) с встроенным mod_python обслуживает 50 python-приложений. Если апач работает в тредовом режиме, тогда и mod_python тоже (апач настраивается на тредовый режим через опции компиляции, а модуль уже при сборке сам определяет в каком режиме работает апач и собирается в этом же режиме). Теперь сама ситуация: 50 веб-сайтов смогут вполне создать нагрузку 1-5 запросов в секунду, а на каждый процесс апача у нас приходится, например, по 25 тредов и одному интерпретатору python. Теперь вспомним про Interpreter Lock и прикинем какие могут быть ситуации. В общем говоря в тредовом режиме mod_python работает достаточно нестабильно. Выглядеть это будет как таймауты (код будет долго ждать разблокировки интерпретатора).

При работе в fork() режиме веб-сервера, проблема блокировок снимается (т.к. на каждое соединения клиента выделяется отдельный процесс веб-сервера и следовательно отдельный интерпретатор), но возникает проблема с экономией оперативной памяти. Т.к. каждый процесс потребляет значительное кол-во памяти (от 20 до 50 Мб ориентировочно).

Теперь вспомним про второй способ сопряжения приложенияс веб-сервером и подумаем о связке не встроенным способом — т.е. через популярный FastCGI. Веб-сервер в этом случае разгружается и никак практически не зависит от стабильности приложения. Т.е. конечный пользователь в любом случае получит или запрашиваемый результат или страницу с ошибкой, что намного лучше таймаута без каких либо объяснений. В этом случае сам веб-сервер может работать в тредовом режиме и экономить память. Но есть другая проблема. Каждое отдельное python-приложение будет запущено отдельным процессом и будет также потреблять память, что в итоге может дать не экономию, а большие затраты.

Интересно что приложение запущенное в режиме FastCGI может также работать в тредовом и fork() режимах, что соответственно влияет на потребление ресурсов. В тредовом режиме проблемы остаются те-же что и с mod_python. Только кол-во запросов к отдельному FastCGI-процессу в принципе сокращается, что дает меньшую вероятность таймаута в связи с блокировкой интерпретатора.

Подводя итог. Хочу отметить что идеального решения нет. Для каждых отдельных случаев нужно разрабатывать решения (чем мы в принципе и занимаемся). Просто имея эту информацию, Вы сможете сами представить при написании Вашего проекта в каком окружении его лучше запускать. Следовательно Вы сможете его правильно спроектировать и оптимизировать.

Желаем успехов в разработке!

Exception #1 done!

Конференция по Python в Киеве Exception #1 прошла успешно!

Было приятно познакомиться с некоторыми нашими клиентами в реале :-)

Презентация к моему докладу в виде pdf

Фото можно посмотреть в моем альбоме. Пока офциальная версия фоток не выложена.

Для интересующихся пишу ссылки по материалам моего доклада.

Frameworks:

ORM про который много говорилось SQLAlchemy

Мои персональные контакты: dobrych [at] gmail.com отзываюсь как на email так и на чат (google talk).

Про конференцию еще написал Алексей в своем блоге. Обсуждение на deveopers.org.ua

Два треда на PythAgora-uaМатериалы с Exception #01 и Exception #01 прошёл.

Апдейт Python до 2.5 на серверах

Проапдейтили Python до версии 2.5 на основном и девелоперском сервере. Так что кому нужны новые фишки — прошу... ;-)

TurboGears в наших рядах

После прочтения поста в UA-DevTalk с вопросом о хостинге сабжа, решил уделить время этому фреймвоку и на практике убедиться что он работает.
Убедился! работает :-). Скачал из svn Turboblog и через 15 минут разбирательств с документацией движок был запущен. Почитал еще для развития про фреймвок — впечатления приятные, вызвал интерес, обязательно уделю время для личного его ковыряния.

Блог переехал под управление Django!

django made Наш Хостинговый Блог работает теперь под управлением Django. Переход с wordpress был практически безболезненный, не считая конвертирования many-to-many sql-таблиц. Но это дело 20 минут. Самое трудное было написать саму логику и темплейты. Теперь наш блог выглядит как и весь сайт, в одном стиле. URL-ы все остались целыми, а некоторые редиректятся на новые.
Это далеко не последняя версия блога. Мы продолжаем работать над сайтом дальше!

версии django

В связи с официальным релизом m-r ветки 0.95, обновляется все и на наших серверах. На основном сервере m-r trunk обновился до 0.95, а девелоперкий сервер обновлен до текущего trunk и будет обновлятся еженедельно или после мажорных изменений.

Django для разработчиков, обновление до trunk

Сообщаю, что раз в сутки у нас происходит обновление ветки trunk для Django web framework. Данная опция была включена в связи с недавним слиянием ветки RemovingTheMagic с trunk и планированием новых релизов. Многим, кто пользуется этим framework, будет полезно работать уже с новой версией, т.к. там произошли большие изменения в модели и именовании классов/методов/переменных. Стабильная версия (0.91) работает по умолчанию, для включения версии trunk надо добавить в PythonPath на сервере строку /usr/local/www/soft/django-dev/django На эту тему есть записи на форуме Django от SoftwareMoniac.

Обновление Python до 2.5 снапшота

На девелоперском сервере обновился Python до версии 2.5.a0 (20060326) Django отрапортовал что работает :) Правда пришлось переустановить (но с setuptools очень быстро) . Для портов тоже пришлось маленький трюк сделать, а то все питоновые порты просили 2.4.2 ставить. Полечилось просто:
echo "PYTHON_VERSION=python2.5" >> /etc/make.conf

Ruby on Rails на хостинге

Мы начали поддержку Ruby on Rails на нашем хостинге. В скором будующем думаю ещё появяться пару тестовых сайтов с новомодными фичами, которые принято иногда называть Web2.0 :) На данный момент ещё оптимизируется работа ruby и python на сервере через mod_fastcgi + apache2. Если будет время написать о производительности постараюсь выложить результат сюда.

И опять кеширование! - часть3

Не знаю почему, но так получается что это третья заметка за месяц на тему HTTP-кеширования. К написанию этой заметки меня побудило прочтение новости о выходе "PHPIns!de #17, Февраль 2006" на opennet.ru Получилось как всегда... прочтение пары линков, пару запросов в гугле и уже появились мысли для изложения :) Итак, набор:
  1. Статья на английском "Doing HTTP Caching Right: Introducing httplib2"
  2. Перевод на русский от xmlhack.ru "Правильное HTTP-кэширование: httplib2"
  3. И сам Httplib2.
Из интересного в этой статье: табличка с описанием разных http-заголовков (директив), объяснение самих принципов проверки валидности кешированого объекта и разъяснения стандартов. Отдельно хочу отметить 3 пункт, библиотека написана для Python. Это полноценнный http-клиент, на нём всё описанное в статье можно и опробвыать. PS: Таки Пайтон рулит? Эээх когда будет время им плотнее заняться... :)

Доработка девелоперского хостинга

К PHP5 и MySQL5 у нас ещё добавилась поддержка Python со всеми фенечками на сервере. Setuptools, py-MySQL, etc... Django Framework установлен и django-admin.py startproject test1 отработал на ура! Ещё немного тестов и будет релиз!

Python для системного программирования

Последнее время рассуждаю на тему оптимального языка для системного программирования под unix. Т.е. то что традиционно делается мною на perl (day to day system tasks). Меня perl во многом устраивает, но сомнения по его производительности и "приятности работы" с ним немного терзают. Зато вот всё больше меня привлекает Python. Честно говоря начал его серьёзно воспринимать после того как увидил несколько работающих софтин на нём. Тот же yum, который использует redhat или взять Google, который тоже много где его в вебе использует. А Nokia вообще его портировала на свои телефоны. На данный момент мне интересна работа с XML и интеграция с системой. Попробую ближайшее время Python + XML в привязке к нашему хостингу. Посмотрим что из этого получится, напишу позже отчёт.