LINUX.ORG.RU
 

Pythons фрэймворки. Скорость.


0

6

Для одного простенького проекта смотрел разные python-фрэймворки на предмет скорости.
Большие фрэймворки (вроде Django, Pyramid) даже не смотрел. Там на одном сервере без кэша больше 1000 запросов в секунду получить сложно.

Так вот, победителем вышел http://bottlepy.org/ с bjoern WSGI сервером (http://pypi.python.org/pypi/bjoern). На моей локальной машине скорость "hello world" была порядка 22k запросов в секунду.
Если кому интересно могу завтра выложить результаты тестирования.


[#]  
resurtm
>>-----Цитата---->>

На моей локальной машине скорость "hello world" была порядка 22k запросов в секунду.

<<-----Цитата----<<

А скорость print "hello world"; какая была?

* ()
[#]  

> Для одного простенького проекта смотрел разные python-фрэймворки на предмет скорости.

> Там на одном сервере без кэша больше 1000 запросов в секунду получить сложно.

> Так вот, победителем вышел http://bottlepy.org/ с bjoern WSGI сервером

это такой способ вскрыть мозг всем, кто зайдет в топик?

** ()
[#]  

"hello world" не показатель , ты попробй сделать хоть пару запросов к БД и парсинг шаблона и увидишь как твои 22k будут в лучшем случае 22k/10

* ()
[#] Ответ на: комментарий от AGUtilities 03.02.2012 20:19:49  
KRoN73

Это, мягко говоря, первая функциональность любого фреймворка.

Впрочем, я так понимаю, что в топикстарте просто наброс был...

***** ()
[#] Ответ на: комментарий от KRoN73 03.02.2012 21:30:46  
AGUtilities

но вот в cherrypy, на пример, нет своего собственного шаблонизатора или интерфейса БД, если не считать за них сам питон. он же остаётся при этом фреймворком? если да, то в таком случае, результаты замера производительности с использованием шаблонизатора и БД становятся зависимыми от кода(разной кривости и функционала) связывающего (грубо говоря) серверную часть с темплетером и БД.

** ()
[#] Ответ на: комментарий от AGUtilities 03.02.2012 21:41:25  
KRoN73
>>-----Цитата---->>

он же остаётся при этом фреймворком?

<<-----Цитата----<<

Фреймворк — это каркас для сборки готового приложения. Там должно быть всё. Если чего-то нет для того, чтобы быстро и родными средствами создать приложение, то это просто набор библиотек.

***** ()
[#] Ответ на: комментарий от AGUtilities 03.02.2012 21:41:25  

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

* ()
[#] Ответ на: комментарий от AGUtilities 03.02.2012 21:41:25  

А в Pyramid есть? Там тоже нет, просто при создании приложения ты можешь указать возможность использования определенного шаблонизатора и добавить в проект SQLAlchemy.

** ()
[#]  
demmsnt

А что кроме бутылки вообще смотрел?

Я лично webob юзал. Django юзал. Турбогирз еще первый. Фласк. Вейскрейзуг немного (дня два). Торнадо ну и в принципе не считая Z и Z3 вроде все.

Мой выбор Торнадо на сей момент. У него у единственного оказались фишки о которых други даже и не думают (типа вам надо вы и прикрутите)

* ()
[#]  
Zubchick

что бы отдавать статичную хтмльку питон не нужен, с этим и nginx прекрасно справится А что бы состаряпать простенький проект я бы взял фласк или джангу или торнаду или ботл – это вообще без разницы, потому что простенькому сайту не нужно держать никаких нагрузок, ему достаточно просто работать

* ()
[#] Ответ на: комментарий от Zubchick 04.02.2012 2:57:45  
demmsnt

Смотря что ты потом к этому простенькому сайту решишь докрутить. Я так любил фласк. так любил... Это было нечто. А потом решил туда прикрутить сам не помню что. И оказалось, что они в внутрях там такие макароны сделали.... Там крушавель с монашками внутри...

* ()
[#] Ответ на: комментарий от KRoN73 03.02.2012 21:30:46  
>>-----Цитата---->>

Это, мягко говоря, первая функциональность любого фреймворка.

<<-----Цитата----<<

У bottle.py нет запросов к бд из коробки, если не считать sqlite-plugin в новых версиях.

Я так понимаю, что тех, кто думает категориями php, переучить думать по-другому очень сложно.

()
[#] Ответ на: комментарий от deb 04.02.2012 3:19:44  
KRoN73
>>-----Цитата---->>

Я так понимаю, что тех, кто думает категориями php, переучить думать по-другому очень сложно

<<-----Цитата----<<

Э... Прошу прощения, а что, работа с дата-бэкендом для Python-фреймворков уже не является актуальной? libastral?

***** ()
[#] Ответ на: комментарий от yanka 03.02.2012 20:04:05  
>>-----Цитата---->>

"hello world" не показатель

<<-----Цитата----<<

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

** ()
[#] Ответ на: комментарий от pi11 04.02.2012 3:33:07  
KRoN73
>>-----Цитата---->>

Есть задачи где БД не нужна.

<<-----Цитата----<<

Вычисление N знаков числа Пи?

>>-----Цитата---->>

Во-вторых скорость парсинга шаблонов я не тестирую

<<-----Цитата----<<

А страницу выводим, запихнув html-код в python-файлы? И у кого тут PHP-мышление? :)

***** ()
[#] Ответ на: комментарий от KRoN73 04.02.2012 3:34:43  
>>-----Цитата---->>

Вычисление N знаков числа Пи?

<<-----Цитата----<<

Ну навскидку - если сервис тянет данные с API

>>-----Цитата---->>

А страницу выводим, запихнув html-код в python-файлы? И у кого тут PHP-мышление? :)

<<-----Цитата----<<

Я уже говорил, я не тестировал скорость шаблонизаторов. Конечно скорость будет меньше.

** ()
[#] Ответ на: комментарий от KRoN73 04.02.2012 3:34:43  
AGUtilities

у питона и у самого по себе не плохая форматилка стрингов, так что считывание с диска файла и форматирование его ака

return "%(f1)s %(f2)s" % {'f1': 'text', 'f2': 'text'}
не великая премудрость.

** ()
[#] Ответ на: комментарий от KRoN73 04.02.2012 3:27:55  
>>-----Цитата---->>

Э... Прошу прощения, а что, работа с дата-бэкендом для Python-фреймворков уже не является актуальной? libastral?

<<-----Цитата----<<

Во-первых:

Is bottle suitable for complex applications?

Bottle is a micro framework designed for prototyping and building small web applications and services. It stays out of your way and allows you to get things done fast, but misses some advanced features and ready-to-use solutions found in other frameworks (MVC, ORM, form validation, scaffolding, XML-RPC). Although it is possible to add these features and build complex applications with Bottle, you should consider using a full-stack Web framework like pylons orpaste instead.

Во-вторых, использовать тот ORM, который тебе хочется, или даже просто прямые запросы (при этом без большей части php-шных болячек) - это совсем не больно.

()
[#] Ответ на: комментарий от KRoN73 04.02.2012 3:34:43  
>>-----Цитата---->>

А страницу выводим, запихнув html-код в python-файлы? И у кого тут PHP-мышление? :)

<<-----Цитата----<<

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

()
[#]  

Ждем для сравнения скорость отдачи статического "Hello, World" фронтэндом.

Вообще тест проведенный ТС подходит для единственной задачи (ни шаблонов, ни сколько-нибудь динамического содержимого - хотя бы hello world + counter, ни запросов к базе) - проверить жив ли еще бакенд (но для чего производительность в такой задаче).

anonymous ()
[#] Ответ на: комментарий от pi11 04.02.2012 3:48:58  
KRoN73
>>-----Цитата---->>

Ну навскидку - если сервис тянет данные с API

<<-----Цитата----<<

А я не зря там выше расширил понятие до дата-бэкенда. Пофиг, из быстрой БД идут данные или через медленный API. Всё равно бутылочное горлышко будет тут.

***** ()
[#]  

Offtop

Почитал я тут про php-мышление, про какие-то болячки php. И возник у меня вопрос, про какие-такие неприятности в php говорят все эти люди? Какие в php есть неприятности для нормального программиста? Я знаю пока только одну - в php порог вхождения мал, поэтому там куча школьников, которые создают много невнятного кода, но какое это имеет отношение к нормальному программисту?

Итак повторю вопрос, какие в php есть трудности для нормального программиста? (или все это просто популярный гон в попытке выделиться?)

anonymous ()
[#] Ответ на: комментарий от KRoN73 04.02.2012 4:17:39  
>>-----Цитата---->>

Всё равно бутылочное горлышко будет тут.

<<-----Цитата----<<

Да скорее всего. Но хочется быть увереным, что оно там и на саму отдачу контента времени тратиться минимум.
Или это плохо?

** ()
[#] Ответ на: комментарий от anonymous 04.02.2012 4:18:16  
>>-----Цитата---->>

Какие в php есть неприятности для нормального программиста?

<<-----Цитата----<<

Нормальный программист - это тот, который напишет 100 строчек, учитывая все нюансы, там, где можно написать 5, и писать просто и не заморачиваясь?

>>-----Цитата---->>

в php порог вхождения мал, поэтому там куча школьников, которые создают много невнятного кода, но какое это имеет отношение к нормальному программисту?

<<-----Цитата----<<

На bottle.py создать законченное приложение намного проще и намного быстрее, чем на чистом php. Только php-измы по созданию велосипедов там не пройдут, в итоге человек потратит 30 минут, чтобы сделать как правильно, а не 5 минут, чтобы нагородить велосипед, и 3 дня, чтобы отладить так, чтобы этот велосипед работал.

Примеры? Ну те же sql-injection, которые легко допустит новичок в php, но с трудом реализует разработчик на bottle.py.

()
[#] Ответ на: комментарий от KRoN73 04.02.2012 4:17:39  
>>-----Цитата---->>

А я не зря там выше расширил понятие до дата-бэкенда. Пофиг, из быстрой БД идут данные или через медленный API. Всё равно бутылочное горлышко будет тут.

<<-----Цитата----<<

Это в php обязаловка на каждое действие запрос к бд делать. В bottle.py его можно хоть в памяти хранить, и он будет жить между запросами.

()
[#] Ответ на: комментарий от AGUtilities 04.02.2012 4:25:29  
>>-----Цитата---->>

конечно, нормальный программист со всем справится и при помощи ассемблера, но зачем..?

<<-----Цитата----<<

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

http://php.net/manual/ru/language.namespaces.php

Не знаю, насколько это те неймспейсы, про которые ты говоришь, но что-то с таким названием в php есть.

P.S. Я реально хочу понять, насколько в php много реальный недостатков (то, что про него больше гона, чем конструктивной критики, я не сомневаюсь, но про реальные недостатки хочу знать). Своего опыта программирования в php у меня совсем мало.

anonymous ()
[#] Ответ на: комментарий от anonymous 04.02.2012 4:34:49  
>>-----Цитата---->>

P.S. Я реально хочу понять, насколько в php много реальный недостатков

<<-----Цитата----<<

А какие в php реальные достоинства (не для запускальщика уже готовых приложений, а именно для разработчика)?

()
[#] Ответ на: комментарий от deb 04.02.2012 4:28:26  
>>-----Цитата---->>

Какие в php есть неприятности для нормального программиста?

<<-----Цитата----<<
>>-----Цитата---->>

Нормальный программист - это тот, который напишет 100 строчек, учитывая все нюансы, там, где можно написать 5, и писать просто и не заморачиваясь?

<<-----Цитата----<<

Я знаю про идиотский стиль общения отвечать вопросом на вопрос. И знаю как это работает на уровне психологии, и знаю когда это не работает совсем. По существу ответ будет?

>>-----Цитата---->>

На bottle.py создать законченное приложение намного проще и намного быстрее, чем на чистом php. Только php-измы по созданию велосипедов там не пройдут, в итоге человек потратит 30 минут, чтобы сделать как правильно, а не 5 минут, чтобы нагородить велосипед, и 3 дня, чтобы отладить так, чтобы этот велосипед работал.

<<-----Цитата----<<

Напомню, вопрос был про слабые стороны php. Зачем расписывать как хорош bottle.py? Я может на php собираюсь писать скрипты для администрирования.

>>-----Цитата---->>

Ну те же sql-injection, которые легко допустит новичок в php, но с трудом реализует разработчик на bottle.py.

<<-----Цитата----<<

О, ну, наконец. Можно было одной этой строчкой ограничиться.

anonymous ()
[#] Ответ на: комментарий от deb 04.02.2012 4:30:04  
>>-----Цитата---->>

Это в php обязаловка на каждое действие запрос к бд делать.

<<-----Цитата----<<

Чет мне кажется такая обязаловка исключительно у тебя в мозгу. Я могу написать echo "Hello, World" и php ни в какую базу не полезет.

anonymous ()
[#] Ответ на: комментарий от deb 04.02.2012 4:39:31  
>>-----Цитата---->>

А аналог от php есть?

<<-----Цитата----<<

Простота инструмента на Python для очень узкой области - это безусловно краеугольный недостаток php.

Такие аргументы мне не интересны. Мне нужен конструктив и исключительно в пределах конкретного вопроса. То, что для тебя bottle.py идеален, я уже понял, но выглядит это так, как будто ты сам в этом сомневаешься и, поэтому, пытаешься мне это доказать. Твоя задача, тебе и инструмент выбирать, тебе и с косяками разгребаться. Все остальным до этого нет дела.

Меня в этом треде интересуют высказывания про реальные косяки php.

anonymous ()
[#] Ответ на: комментарий от anonymous 04.02.2012 4:44:58  
>>-----Цитата---->>

Я знаю про идиотский стиль общения отвечать вопросом на вопрос. И знаю как это работает на уровне психологии, и знаю когда это не работает совсем. По существу ответ будет?

<<-----Цитата----<<

Всё-то ты знаешь. Раз так, вот и ответь, кто такой нормальный программист. И почему, когда на каждое дело нужно делать кучу рутинных действий, называется "есть всё для нормального программиста".

>>-----Цитата---->>

Напомню, вопрос был про слабые стороны php. Зачем расписывать как хорош bottle.py? Я может на php собираюсь писать скрипты для администрирования.

<<-----Цитата----<<

Напомню, ответ был про то, что php лёгок для начинающих. Это неверно, php не так уж и лёгок для написания полноценного приложения начинающим - это раз, и bottle.py намного проще - это два.

()
[#] Ответ на: комментарий от anonymous 04.02.2012 4:47:49  
>>-----Цитата---->>

Чет мне кажется такая обязаловка исключительно у тебя в мозгу. Я могу написать echo "Hello, World" и php ни в какую базу не полезет.

<<-----Цитата----<<

Мальчик хочет в Тамбов. Чики чики да.

Для анонимусов повторяю второй раз.

Мы запросили скрипт для php. У нас заново сформировалось всё окружение, сделались все запросы, процесс умер. Всё, кончилось кино.

В bottle.py можно дёргать этот запрос только тогда, когда нужно, и держать его всё время в памяти - новое обращение может сразу посмотреть "а что у нас в памяти", а не дёргать заново. bottle.py не умирает после запроса, а продолжает работать всё время.

()
[#] Ответ на: комментарий от anonymous 04.02.2012 4:34:49  
AGUtilities
>>-----Цитата---->>

что-то с таким названием в php есть

<<-----Цитата----<<

вот именно, что что-то - не понятно что. и это на фоне жабы и питона почти до неё доплюнувшего.

идём дальше.

приложения на php, не могут похвастаться нормальной документированностью, в то время как в питоне документирование является частью системы (http://docs.python.org/)

далее - пакеты и модули: в питоне красиво выполнены так, что и не хочется делать хреново, в отличии от php, в котором вообще анархия и разграй.

и почему, спрашивается, в php, в начале каждого файла, нужно писать

<?php
? да потому, что php изначально не задумывался для написания чего-то мощного, а задумывался как препроцессор текстовых файлов. причём, криво, так как utf-8 в нём так нормально и не работает.

** ()