Производительность python frameworks для веб...
TRANSCRIPT
![Page 1: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/1.jpg)
Часть первая
Общие сведения о современных тенденциях веб-разработки
ПроизводительностьPython Frameworks
для веб-приложений
![Page 2: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/2.jpg)
WEB 2.0
![Page 3: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/3.jpg)
Ретивое программирование :-)
● итерации: кодирование, тестирование, обсуждение;● ориентир на бизнес заказчика;● уход от формальностей в пользу успешного проекта
и довольного заказчика.
agile development
ГИБКОСТЬ
![Page 4: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/4.jpg)
Гибкая платформа
● гибкий язык;● скорость написания кода;● оперативное обновление и тестирование;● производительность приложения;● кроссплатформенность;● правильный framework.
![Page 5: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/5.jpg)
PHPPerlJavaRuby
Python
![Page 6: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/6.jpg)
Python + Agile = ?
![Page 7: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/7.jpg)
Часть вторая
Выбираем платформу или особенности интерпретатора Python
ПроизводительностьPython Frameworks
для веб-приложений
![Page 8: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/8.jpg)
Преимущества Python● относительно быстрый интерпретатор;● экономная работа с памятью (сборка мусора);● портабельность (все мажорные ОС);● отличный ООП;● работа с модулями;● возраст проекта;● большое сообщество пользователей.
![Page 9: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/9.jpg)
Статистика Google о запросах:php, python, ruby
Возраст проектов
Python – 1990PHP – 1994Ruby – 1995
![Page 10: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/10.jpg)
Модули в Python
● большая коллекция стандартных модулей;● большое количество дополнительных
внешних модулей, которые обычно распространяются как open source.
Есть репозиторий модулей.Прошу на Python Cheese Shop
http://python.org/pypi
![Page 11: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/11.jpg)
Python не течет!В отличии от известных Perl и Ruby, у Python нет проблем со сборкой мусора, поэтому процессы не текут и соответственно память используется по назначению.
Это особо важно на продакшн проектах, т.к. там перезагрузка приложения или его понижающаяся скорость выполнения влияет прямо на успешность бизнеса.
Пример (два реальных веб-сайта):Первый построен на Django + FastCGI + Apache.Второй на RoR + FastCGI + Apache.
В первом варианте процесс работает 11 дней без перезагрузки и имеет размер общий 21508Kb, а размер резидента 9940Kb.
Во втором примере процесс работает 5 дней и имеет общий размер в 212Mb. А резидент в 9500Kb.
Делайте выводы сами. :-)
![Page 12: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/12.jpg)
Часть третья
Существующие web frameworks для Python
ПроизводительностьPython Frameworks
для веб-приложений
![Page 13: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/13.jpg)
Замолвим слово про OOP и ORM
OOP – Object Oriented Programming
ORM – Object Relational Mapping
DATABASE
FIELD 1
FIELD 2
FILED 3
CLASS
METHOD 1
METHOD 2
METHOD 3
![Page 14: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/14.jpg)
Python Web Framework
Pylons
● Легкий и гибкий фреймворк;● ORM: SQLAlchemy/SQLObject;● встроенная поддержка AJAX;● темплейты на выбор (Myghty/Kid/Cheetah);● кеширование на уровне темплейтов, кода и
HTTP (Etag);● закос под Rails.
![Page 15: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/15.jpg)
Python Web Framework
Clever Harold
● Амбициозный фреймворк?● ORM: SQLAlchemy/SQLObject;● темплейты на выбор (Kid/Cheetah);● кеширование: в памяти, через memcached,
dbm file.
![Page 16: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/16.jpg)
Python Web Framework
Web.py
● Готично! Ой, аскетично;● ORM отсутствует, прямая работа с базой;● темплейты на Cheetah;● кеширование на уровне темплейтов.
![Page 17: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/17.jpg)
Python Web Framework
Turbo Gears
● Мощный модульный фреймворк;● ORM: SQLAlchemy/SQLObject;● встроенная поддержка AJAX;● темплейты на выбор (все что только можно);● кеширование на уровне SQLObject;
![Page 18: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/18.jpg)
Python Web Framework
Django
● Продуманный и аккуратный фреймворк;● ORM: свой и появилась поддержка SQLAlchemy;● темплейты свои похожие на Smarty (можно
использовать другие);● кеширование отдельная инфраструктура с
поддержкой memcached, database caching, filesystem caching, memory caching;
● отличная работа с HTTP-кешированием и экспайрингом + обработка Conditional GET.
![Page 19: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/19.jpg)
Производительность на примере Django Python Framework
● История создания;● фреймворк для журналиста;● slashdotting;● как всё оптимизировать...
● Всё начинается с данных. Выбор базы данных.
● Кеширование отрендереных страниц.● HTTP-кеширование.
![Page 20: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/20.jpg)
Часть четвертая
Серверные технологии для разворачивания производительных веб-приложений
ПроизводительностьPython Frameworks
для веб-приложений
![Page 21: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/21.jpg)
mod_pythonВстраивает интерпретатор с подключенными модулями Python прямо в процесс Apache
+ интерпретатор постоянно в памяти и очень быстро работает+ интерпретатор постоянно в памяти и очень быстро работае;
- может уложить полностью веб-сервер в случае глюка
- работает только с Apache
Правильный сборщик мусора
![Page 22: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/22.jpg)
FastCGIЗапускает откомпилированный байткод как отдельный процесс
+ работает быстро за счет постоянно загруженного скомпилированного байткода;
- медленнее чем mod_python;
Главное преимущество - гибкость
+ отдельный от веб-сервера процесс;+ может работать на отдельном сервере и от отдельного пользователя в системе;
![Page 23: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/23.jpg)
SCGIТот же FastCGI, только с другим протоколом общения с веб-сервером.
![Page 24: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/24.jpg)
Python web-serverВеб-сервер написанный на Python
+ более тесная интеграция приложения и веб-сервера;
- не такой быстрый как веб-сервер на Си.
Удобный для разработки и тестирования
+ удобство отладки;
+ всегда под рукой;
![Page 25: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/25.jpg)
Немного о веб-серверах
● Классический Apache говорят в связке с mod_python самый быстрый вариант.
● Lighttpd в связке с FastCGI дает сравнимую производительность и меньшее потребление памяти.
● Nginx в связке с FastCGI шустрее чем Lighttpd и потребляет еще меньше памяти. У него также есть ряд других преимуществ.
![Page 26: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/26.jpg)
Часть пятая
Итог: Python и Веб – спортивный интерес или бизнес-решение?
ПроизводительностьPython Frameworks
для веб-приложений
![Page 27: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/27.jpg)
Как всё связать?
Agile development
Производительность
Framework
Бизнес
![Page 28: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/28.jpg)
В любом бизнесе главной движущей идеей является решение проблемы заказчика / покупателя.
Эту же идею и берет технология «Agile development».
И для достижения этой цели используются средства, в нашем случае Framework, который позволит быстрее и качественнее решить задачу.
Вот на этом этапе приходится решать какую платформу выбрать.
И тут как раз стоит заглянуть вперед и посмотреть на момент внедрения и работы приложения в условиях продакшена, чтоб принять правильное решение.
![Page 29: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/29.jpg)
Поэтому в итоге вопросы производительности, легкости внедрения и сопровождения становятся на первый план.
![Page 30: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/30.jpg)
И на закуску пример из реальной жизни
Почему на PHP так много проектов?
Легко внедрять...
Почему на PHP всё больше плюются?
Глючность и низкая производительность...
![Page 31: Производительность Python Frameworks для веб …livedev.org/files/present_v1.pdf · экспайрингом + обработка Conditional ... Всё начинается](https://reader034.vdocuments.mx/reader034/viewer/2022050722/5a7af3a27f8b9a66798ba5e4/html5/thumbnails/31.jpg)
У Python много других преимуществ, про которые можно долго рассказывать...
Советую его выучить как минимум для личного развития ;-)
Успехов в разработке!Илья Хамушкин
E-mail: [email protected]: [email protected]: 2211123
Меня можно почитать:http://tophost.com.ua/blog/http://livedev.org/