Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сравнение TurboGears и Django, Читаем, обсуждаем, тестируем 
V
    Опции темы
PyAlexey
Дата 5.10.2006, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 19.9.2006
Где: Россия, Нижний Но вгород

Репутация: нет
Всего: 7



PM   Вверх
pythonwin
Дата 5.10.2006, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 2
Всего: 36



PyAlexey, спасибо, за ссылки!
PM WWW GTalk Jabber   Вверх
alrond
Дата 10.10.2006, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 27.7.2006

Репутация: 4
Всего: 6



привет всем!
у меня готовы первые результаты...итак


Тестирование проводил на следующем железе и софте:
Цитата

CPU0: AMD Opteron™ Processor 146 stepping 01
Detected 2000.615 MHz processor.
Memory: 2040652k/2063232k available (1835k kernel code, 21252k reserved, 567k data, 208k init, 1145728k highmem)

Debian 3.1
Linux version 2.6.14-2-k7-smp (Debian 2.6.14-2bpo1) 
Python 2.4.3 (#1, Oct  2 2006, 15:34:32) [GCC 3.3.5 (Debian 1:3.3.5-13)] on linux2
Nginx 0.3.4

Django, Turbogears, Flup из последних SVN


Цель тестирования была определить скорость работы самих фрэймворков и сравнить их друг с другом по скорости генерирования страниц и максимальному количеству запросов на данной конфигурации.
Поэтому была выбрана модель без базы данных, которая контроллером генерировала ответ и парсила один шаблон. В итоге получался HTML-файл c "Hello World!"
Так как не было целью найти наибыстрейший вариант работы какого-то конкретного фрэймфорка, то я использовал связку Nginx + FCGI через IP:Port
Не сомневаюсь, что можно было добиться большей скорости используя сокеты.
При этом я не смотрел на кэш, так как и с кэшированием данных системой фрэймворки должны нормально работать. Как видно из дальнейших результатов, первые запросы были медленнее


Листинг Django-проекта:
Код

# cat urls.py

from django.conf.urls.defaults import *
urlpatterns = patterns('',
    (r'^$', 'dj.views.index'),
)


# cat views.py

from django.template import Context, loader
from django.http import HttpResponse

def index(request):
    t = loader.get_template('world.html')
    c = Context({
            'hello_world': "Hello World!",
    })
    return HttpResponse(t.render(c))


# cat world.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?python import sitetemplate ?>
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
    <div>{{ hello_world }}</div>
</body>
</html>


Для запуска джанги использовал:
Код

# cat start.sh
python manage.py runfcgi method=threaded host=127.0.0.1 port=8801 pidfile=/srv/CMF/dj.pidf


Для проверки работы с Psyco, вставил:
Код

# cat manage.py
#!/usr/bin/env python
from django.core.management import execute_manager

#import psyco
#psyco.full()



Проект TG:
Код

# cat controllers.py
import logging
import cherrypy
import turbogears
from turbogears import controllers, expose, validate, redirect

from tg import json

log = logging.getLogger("tg.controllers")

class Root(controllers.RootController):
    @expose(template="tg.templates.world")
    def index(self):
        return dict(tg_flash="Hello, world!")


# cat templates/world.kid
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?python import sitetemplate ?>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#" py:extends="sitetemplate">
<body>
    <div py:content="tg_flash"></div>
</body>

</html>


изменил в конфиге:
Код

# cat dev.cfg
[...skip...]

server.socket_host="127.0.0.1"
server.socket_port=8900

[...skip...]


дял запуска использовал скрипт из http://wiki.codemongers.com/NginxTurboGearsFCGI
где изменил
Код

from fcgi import WSGIServer
на
from flup.server.fcgi  import WSGIServer

WSGIServer(application=wsgiApp).run()                                                                                                                                                               
на
WSGIServer(application=wsgiApp, bindAddress=('127.0.0.1', 8900)).run()



Для тестов использовал команды

Код

ps aux | grep python

ab -c 5 -n 1000 http://djangocom/  = django-project
ab -c 5 -n 1000 http://tg.com/   = TG-project

http_load -rate 10 -seconds 5 alrond.com
http_load -rate 10 -seconds 5 alrond.de



Методика тестирования:
- Запускал проект
- Измерял потребляемую память
- Прогонял 3 раза подряд тест "ab"
- Измерял потребляемую память
- Прогонял http_load 
- Перезапускал проект с psyco и повторял вышеописанные пункты


Более подробное тестирование, с SQL-запросами, вариантами FCGI по сокету и IP, сравнением с Ruby on Rails, с дургими серверами кроме Nginx
я проделаю позже...оставайтесь на связи  smile 

а пока жду конструктивных предложений и испровлений методики

Добавлено @ 17:40 
Результаты:

Первым я прогонял Django

Память и время CPU до теста:
Цитата

root      5880  0.0  0.2 50388 4296 ?        S    14:06   0:00 python manage.py runfcgi method=threaded host=127.0.0.1 port=8801 pidfile=/srv/CMF/dj.pid

после теста:
Цитата

root      6118  3.9  0.3 77460 7264 ?        S    14:13   0:03 python manage.py runfcgi method=threaded host=127.0.0.1 port=8801 pidfile=/srv/CMF/dj.pid


Далее "ab" (приводу только результаты):
Document Path:          /
Document Length:        251 bytes
Concurrency Level:      5
Complete requests:      1000


Цитата


Time taken for tests:   1.333539 seconds
Total transferred:      389000 bytes
HTML transferred:       251000 bytes
Requests per second:    749.88 [#/sec] (mean)
Time per request:       6.668 [ms] (mean)
Time per request:       1.334 [ms] (mean, across all concurrent requests)
Transfer rate:          284.21 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       2
Processing:     1    4   3.9      4      56
Waiting:        1    4   3.9      4      56
Total:          1    4   3.9      4      56

Percentage of the requests served within a certain time (ms)
  50%      4
  66%      5
  75%      5
  80%      5
  90%      6
  95%      7
  98%     10
  99%     16
 100%     56 (longest request)

Time taken for tests:   1.364942 seconds
Total transferred:      403000 bytes
HTML transferred:       251000 bytes
Requests per second:    732.63 [#/sec] (mean)
Time per request:       6.825 [ms] (mean)
Time per request:       1.365 [ms] (mean, across all concurrent requests)
Transfer rate:          287.92 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    2   1.7      2       7
Processing:     1    3   2.0      4       8
Waiting:        0    2   1.7      2       7
Total:          6    6   0.5      6       8

Percentage of the requests served within a certain time (ms)
  50%      6
  66%      6
  75%      6
  80%      7
  90%      7
  95%      7
  98%      7
  99%      8
 100%      8 (longest request)

Time taken for tests:   1.359483 seconds
Total transferred:      403000 bytes
HTML transferred:       251000 bytes
Requests per second:    735.57 [#/sec] (mean)
Time per request:       6.797 [ms] (mean)
Time per request:       1.359 [ms] (mean, across all concurrent requests)
Transfer rate:          289.08 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    2   1.7      2       6
Processing:     1    3   2.0      4       7
Waiting:        0    2   1.7      2       6
Total:          6    6   0.4      6       7

Percentage of the requests served within a certain time (ms)
  50%      6
  66%      6
  75%      6
  80%      6
  90%      7
  95%      7
  98%      7
  99%      7
 100%      7 (longest request)



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


Теперь тест http_load:

49 fetches, 1 max parallel, 12299 bytes, in 5.00001 seconds
251 mean bytes/connection
9.79998 fetches/sec, 2459.8 bytes/sec
msecs/connect: 0.0552653 mean, 0.071 max, 0.048 min
msecs/first-response: 1.39635 mean, 1.996 max, 1.307 min
HTTP response codes:
  code 200 -- 49



Теперь тест с включенным Psyco
Память и время CPU до теста:
Цитата

root      6189  0.0  0.4 87464 9272 ?        S    14:15   0:00 python manage.py runfcgi method=threaded host=127.0.0.1 port=8801 pidfile=/srv/CMF/dj.pid

после теста:
Цитата

root      6189  4.8  1.0 131584 21232 ?      S    14:15   0:02 python manage.py runfcgi method=threaded host=127.0.0.1 port=8801 pidfile=/srv/CMF/dj.pid



Цитата


Time taken for tests:   1.280942 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      403000 bytes
HTML transferred:       251000 bytes
Requests per second:    780.68 [#/sec] (mean)
Time per request:       6.405 [ms] (mean)
Time per request:       1.281 [ms] (mean, across all concurrent requests)
Transfer rate:          306.81 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   6.7      0     106
Processing:     1    4   5.6      4      86
Waiting:        0    4   5.6      3      85
Total:          1    4  12.0      4     191

Percentage of the requests served within a certain time (ms)
  50%      4
  66%      4
  75%      4
  80%      5
  90%      7
  95%      9
  98%     12
  99%     14
 100%    191 (longest request)

Time taken for tests:   1.117916 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      403000 bytes
HTML transferred:       251000 bytes
Requests per second:    894.52 [#/sec] (mean)
Time per request:       5.590 [ms] (mean)
Time per request:       1.118 [ms] (mean, across all concurrent requests)
Transfer rate:          351.55 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.2      0       2
Processing:     1    4   3.2      4      25
Waiting:        0    4   3.1      4      25
Total:          1    4   3.2      4      25

Percentage of the requests served within a certain time (ms)
  50%      4
  66%      5
  75%      5
  80%      6
  90%      8
  95%     11
  98%     13
  99%     17
 100%     25 (longest request)

Time taken for tests:   1.113417 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      404209 bytes
HTML transferred:       251753 bytes
Requests per second:    898.14 [#/sec] (mean)
Time per request:       5.567 [ms] (mean)
Time per request:       1.113 [ms] (mean, across all concurrent requests)
Transfer rate:          353.87 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       3
Processing:     1    4   3.1      4      26
Waiting:        0    3   3.2      3      26
Total:          1    4   3.1      4      26

Percentage of the requests served within a certain time (ms)
  50%      4
  66%      4
  75%      5
  80%      5
  90%      7
  95%      9
  98%     15
  99%     20
 100%     26 (longest request)






Теперь тест http_load:

49 fetches, 1 max parallel, 12299 bytes, in 5 seconds
251 mean bytes/connection
9.8 fetches/sec, 2459.8 bytes/sec
msecs/connect: 0.0583878 mean, 0.103 max, 0.05 min
msecs/first-response: 1.23051 mean, 3.907 max, 1.059 min
HTTP response codes:
  code 200 -- 49


Добавлено @ 17:41 
Результаты:

Теперь посмотрим на TurboGears

Память и время CPU до теста:
Цитата

root      6324 27.6  0.6 68364 14160 pts/1   S    14:17   0:00 /usr/bin/python ./start-fcgi.sh

после теста:
Цитата

root      6324 27.3  0.7 94088 15516 pts/1   S    14:17   0:18 /usr/bin/python ./start-fcgi.sh


Далее "ab":
Document Path:          /
Document Length:        178 bytes
Concurrency Level:      5
Complete requests:      1000



Цитата


Time taken for tests:   6.88151 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      338000 bytes
HTML transferred:       178000 bytes
Requests per second:    164.25 [#/sec] (mean)
Time per request:       30.441 [ms] (mean)
Time per request:       6.088 [ms] (mean, across all concurrent requests)
Transfer rate:          54.20 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   1.5      0      28
Processing:     5   29   6.9     30      72
Waiting:        0   29   7.0     29      72
Total:          5   29   6.9     30      78

Percentage of the requests served within a certain time (ms)
  50%     30
  66%     30
  75%     30
  80%     30
  90%     35
  95%     41
  98%     47
  99%     57
 100%     78 (longest request)

Time taken for tests:   6.55886 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      338000 bytes
HTML transferred:       178000 bytes
Requests per second:    165.13 [#/sec] (mean)
Time per request:       30.279 [ms] (mean)
Time per request:       6.056 [ms] (mean, across all concurrent requests)
Transfer rate:          54.49 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:     5   26  79.1     23    2499
Waiting:        5   25  79.1     23    2498
Total:          5   26  79.1     23    2499

Percentage of the requests served within a certain time (ms)
  50%     23
  66%     24
  75%     25
  80%     28
  90%     32
  95%     36
  98%     48
  99%     61
 100%   2499 (longest request)


Time taken for tests:   6.23415 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      338000 bytes
HTML transferred:       178000 bytes
Requests per second:    166.02 [#/sec] (mean)
Time per request:       30.117 [ms] (mean)
Time per request:       6.023 [ms] (mean, across all concurrent requests)
Transfer rate:          54.79 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    4   7.8      0      25
Processing:     5   24  46.5     23    1424
Waiting:        0   21  47.0     18    1424
Total:          5   28  46.0     29    1424

Percentage of the requests served within a certain time (ms)
  50%     29
  66%     30
  75%     30
  80%     30
  90%     33
  95%     39
  98%     52
  99%     68
 100%   1424 (longest request)




Теперь тест http_load:


49 fetches, 1 max parallel, 8722 bytes, in 5.00001 seconds
178 mean bytes/connection
9.79998 fetches/sec, 1744.4 bytes/sec
msecs/connect: 0.065551 mean, 0.08 max, 0.055 min
msecs/first-response: 6.08039 mean, 8.168 max, 5.929 min
HTTP response codes:
  code 200 -- 49



К сожалению мне так и не удалось запустить psyco на TG. Хотя скрипт и запускается, но запросы не обрабатываются, выдавая ошибки. Но если быть до конца честным, то однажды, когда я только готовился к тестам, у меня получилось все...только я так и не понял что изменил, что опять все перестало

Это сообщение отредактировал(а) alrond - 10.10.2006, 23:32
PM MAIL   Вверх
alrond
Дата 10.10.2006, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 27.7.2006

Репутация: 4
Всего: 6



Выводы:

1) по тестам "ab" Django оказался быстрее Tg примерно в 4.5 раза

2) по тестам "http_load" TG оказался медленнее Django на 18%, а время первого ответа в 4.35 раза больше

3) Сразу при запуске Django экономнее обходится с памятью (50388/4296 против 68364/14160 у TG)
После прогонки тестов у обоих CMF потребление памяти возросло. И здесь Django показал себя не с очень хорошей стороны, увеличив размер виртуальной памяти почти в 1.5 раза,
 а реальной в 1.7 раза. TG же показал увеличение виртуальной в 1.38 раза и реальной только на 10%
И все же Django потребляет существенно меньше памяти

4) TG за время тестов TG потребил процессорного времени в 6 раз больше!

5) Модуль Psyco увеличил скорость отдачи в 1.16 раза (результаты только по Django), при этом увеличив потребление виртуальной памяти в 1.74 раза и реальной в 2.16 раза
После тестов память увеличилась заметнее, по сравнению с тестами без psyco (1.7 раза и 2.92 раза)
Хочется заметить, что если отбросить первый проход теста, то модуль показывает себя лучше (ускорение в 1.21 раза против 1.16)

6) тесты "http_load" для Django без Psyco и Django+Psyco противоречивы. С одной стороны модуль в среднем ускорил время первого обращения, с другой максимальный коннект стал в 2 раза больше.


С чем связаны такие неужачные результаты у TG я не знаю, возможно что-то в настройках или проекте...спешите поделиться мнением!  smile

Добавлено @ 18:25 
Только что прогнал http_load для обоих вариантов по несколько раз подряд.
Как и думал, первый проход был плохим. Поэтому в расчет не брался. Судя по результатам других проходов psyco улучшил свои показатели для первого ответа, но время коннекта все равно плохо

http_load -rate 10 -seconds 5 url
49 fetches, 1 max parallel, 12299 bytes, in 5 seconds
251 mean bytes/connection
9.8 fetches/sec, 2459.8 bytes/sec
msecs/connect: 0.0555306 mean, 0.074 max, 0.046 min
msecs/first-response: 1.41573 mean, 1.864 max, 1.31 min
HTTP response codes:
  code 200 -- 49


http_load -rate 10 -seconds 5 url
49 fetches, 1 max parallel, 12299 bytes, in 5.00001 seconds
251 mean bytes/connection
9.79998 fetches/sec, 2459.8 bytes/sec
msecs/connect: 0.0626327 mean, 0.141 max, 0.05 min
msecs/first-response: 1.17227 mean, 1.618 max, 1.052 min
HTTP response codes:
  code 200 -- 49


Это сообщение отредактировал(а) alrond - 10.10.2006, 18:25
PM MAIL   Вверх
J2A
Дата 10.10.2006, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 17.11.2005
Где: Омск

Репутация: 2
Всего: 18



AFAIR, у TG разные конфиги для dev и production. Какой использован? Какие db-backend-ы использованы? В обеих случаях sqlite? Что понимается под виртуальной памятью, что под реальной? На какой ОС производились тесты? Какова методика замера используемой памяти?

И неплохо было б прикрепить Django и TG проекты, а то не совсем понятно какие условия моделировались.

P.S. http://softwaremaniacs.org/blog/2006/10/08...rk-performance/
P.P.S. Я вообще весьма скептически отношусь к идее увеличения производительности средствами psyco и ему подобных инструментов. На поиграться интересно, а использовать на реальных приложениях - риск, причем где проявятся баги от использования psyco предугадать практически невозможно (не так давно в ZoPyRus пробегало сообщение о глюках Zope при включенном psyco)
--------------------
Be easy, stay cool
PM MAIL WWW Jabber   Вверх
alrond
Дата 10.10.2006, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 27.7.2006

Репутация: 4
Всего: 6



да, конфиги разные, только вот отличаются они кажется (если мне не изменяет память) только дебаг-режимом.
DB вообще не использовал. Методика довольно внятно описана вначале, вместе с исходниками, как и ОС и все остальное...

ссылку я читал...

про психо - это всего лишь вариант, кому-то подходит, кому-то нет...
PM MAIL   Вверх
isagalaev
Дата 11.10.2006, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 11.10.2006

Репутация: нет
Всего: нет



Просили замечания по методике:

- FastCGI сервер запущен в threaded-режиме. Известно, что Питон в тредах работает существенно медленно из-за GIL (Global Interpreter Lock) из-за которого все треды очень часть просто ждут друг-друга, потому что интерпретатором может владеть только кто-то один. Поэтому в юниксах, если есть возможность, серверы с питоновским кодом стоит запускать в prefork-режиме - будет быстрее. Кстати, под Windows ситуация обратная, потому что там создание процесса существенно медленней, чем в юниксах, и там на тредах Питон тормозит, насколько я знаю, все же меньше.

- Насчет Psyco. Джанговские девелоперы тестировали его, и нашли интересную штуку. На 32-битных системах он действительно дает прирост в производительности. А вот на 64-битных - наоборот, производительность падает. Происходит так из-за того, что под Psyco процессор переключается в 32-битный режим и не использует всех прелестей своей архитектуры. Если все это так, то тот факт, что под Psyco Django таки работал быстрее означает, вероятно, что Linux и Python скомпилены не в 64 битах (несмотря на то, что работает это все на Opteron'е). Это так?

P.S. Жаль, статья не на блоге! Никаких пингбеков, и чтобы прокомментировать, приходится проходить регистрацию...
PM MAIL   Вверх
pythonwin
Дата 11.10.2006, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 2
Всего: 36



Цитата(J2A @  11.10.2006,  02:14 Найти цитируемый пост)

P.S. http://softwaremaniacs.org/blog/2006/10/08...rk-performance/

Спасибо за ссылку! smile
PM WWW GTalk Jabber   Вверх
Smaug
Дата 23.10.2006, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 18.3.2006
Где: Баку-Москва

Репутация: нет
Всего: 4



cорри что пишу тут (почемуто не получается создать тему в этом разделе)
мне нужно помощь по Django
тут предложил себя поработать в одном проекте на этом фреймворке (разумеется бесплатно,нужны знания и опыт),к моему удивлению заявку приняли, и передо мной в скором времени станут реальные задачи (написание todo list,calendar etc).Я знаю базовый Питон,ПХП,но совсем без опыта разработки - какую литературу-туториалы (кроме выложенных на офиц. сайтах) вы могли бы мне посоветовать?
вообще приму с благодарностью любые советы
заранее спасибо
с уважением
PM MAIL WWW ICQ   Вверх
pythonwin
Дата 23.10.2006, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 2
Всего: 36



Smaug, можешь описать проблему в форум по питону для web
PM WWW GTalk Jabber   Вверх
pythonwin
Дата 23.10.2006, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 2
Всего: 36



книгоман: мысли после запуска

Цитата

Решил поделиться своими соображениями о запуске knigoman.com.ua, возможно будет интересно.

Сайт аналогичной функциональности вменяемый PHP-программист мог бы запустить дней за 3-5, включая разработку и хостинг. У меня на все про все ушло несколько месяцев разработки на Python/TurboGears. Пожалуй, это говорит о каком-то уровне. smile

Конечно, разработка велась “урывками”, но где-то недели 3 чистого времени получилось, м.б. даже больше. Из них немного меньше половины ушло на хождение по граблям TurboGears, Kid и SQLObject (ууу!). Я, правда, потерянным это время не считаю, т.к. этот опыт думаю мне еще пригодится.

Еще 20-30% времени было потрачено на создание функциональности, которая в первый релиз не вошла (надеюсь, пока): регистрация, RSS-ленты, классификатор и т.п. Убеждаюсь, что самое сложное в разработке: сфокусироваться на действительно важном и забить на остальное.

Хорошей идеей было открыть сайт заранее, разместив там анкету. Пока висела анкета, боты внесли сайт в свои базы, и уже через 9 дней после запуска (т.е. вчера) на сайт пришел первый посетитель с поисковика (”Вольвач Павло”, yandex.ru).

Теперь предстоит самое непростое/непонятное - раскрутка. Анонсы в ЖЖ особых результатов не дали, так что остается платная реклама и Петровка. Помощь специалистов (можно за деньги) приветствуется.

Ну и ссылка для ботов: продать или купить книги в Украине. 


Цитата

   1.   Jabbypanda Says:
      Квітень 19th, 2006 at 02:02

      Поки не буде в Україні наступних речей на відчутно новому щаблі розвитку -

      а) банківської системи
      б) системи електронних платежів
      в) пошти

      то проекти типу “Книгоман” залишатимуться вибором маргіналів…

      але вітаю починання! Вода камінь точить.
   2. Max Says:
      Квітень 19th, 2006 at 05:19

      Jabbypanda: З одного боку, я з вами згоден, але з іншого - я все ж таки оптиміст. І все не так погано.

      Системи електронних платежів демонструють дуже високі темпи розвитку (хочу абсолютні цифри замалі). Пошта працює, крім того, у УкрПошти є зараз багато конкурентів. До речі, Кабмін зобов’язав магазини з річними оборотами понад 5 млн грн обладнати терміналами для обслуговування карток.
   3. Mkdir Says:
      Квітень 20th, 2006 at 16:13

      Особенно жжот последняя строка! smile
   4. dem Says:
      Квітень 23rd, 2006 at 10:26

      TO MAX:
      Видел я твои “крики” в рассылке smile
      Что касается Гиарс, то я тоже только начал переход с Zope + Plone на Гиарс после недавнего Python спринта, на котором Гвидо уделил очень много внимания это фрейворку. А с его опытом, да после Zope… думаю он знает о чем говорит ;)
      Конкретнее, сейчас разрабатываю систему биллинга, для ISP. Зная PHP, Perl, Zope - хочу сказать что вменяемый программист пишушищий на этих языках/платформах потратил бы тучу времени (конкуренты 7-й месяц баги ловят). Идея отделить “программистов от программирования” хоронит думающих программистов, и рождает проекты-недоделки + 2 отдела тестировщиков на каждого пЕдолагу.
      С гиарс (замечу что я только учусь), надеюсь что проект будет сдан через 6 недель. (85% уже готово). Связочка там очень скромная iptables(+patch-o-matic) + iprote2(+esfq) + ulogd + PostgreSQL (+ PL/pgsql) + TurboGears.
      Делайте выводы.
      ЗЫ: В сравнении с тем же Zope, производительность гирас(точнее cherrypy) меня очень порадовала.
   5. Slanj Says:
      Травень 9th, 2006 at 21:40

      Хм, хорошее начинание. Сам ожидал такого проекта уже давно. Только вот попытался заказать книгу - вылезла ошибка.

      Могу предложить свою скромную помощь…


PM WWW GTalk Jabber   Вверх
J2A
Дата 22.11.2006, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 17.11.2005
Где: Омск

Репутация: 2
Всего: 18



http://omsk.lug.ru/wacko/Django/DjangoVsTurboGears:

Весьма толковая и вежливая беседа в группе turbogears. В итоге приходят к мнению, что нет идеала и нужно потратить выходные, чтобы попробовать и Django, и TG, и выбрать что по душе.

Понравились слова Марка Рамма:
Цитата

Цитата

Цитата

С Django легко начинать, и он хорош для быстрых, простых проектов,
но не так хорош для больших и сложных.

Я, очевидно, необъективен (я один из главных разработчиков Django) (говорит Джекоб Каплан-Мосс, прим. j2a), так что я ухожу от вопроса «что мне выбрать». Но утверждение, что Django не хорош для «больших сложных проектов», далеко от истины.


Джекоб прав, дело не в размере проекта, или его сложности. Здесь сложности другого характера:

    * Если это та сложность, то SQLAlchemy выиграет с большим отрывом у ORM Django
    * Если эта та сложность, то подстановка шаблонов и возможность создавать собственные библиотеки тегов позволяют Kid выигрывать с большим отрывом у Django templates
    * Если Вы работаете со сложными структурами URL, доставшимися Вам в наследство, и они не влезают в объектную парадигму CherryPy, то основанные на регулярных выражениях отображение URL->объекты в Django позволяют ему взять верх над TurboGears.
    * Если Вы разрабатываете сайты, где админка Django – то, что Вам нужно в большинстве мест, то это неоспоримая победа Django перед TurboGears, где административный интерфейс придется писать самому.

Обе системы отражают свое наследие: Django как CMS, TurboGears как фреймворк-база кроссплатформенного приложения. Django более «когерентен» (мне, как физику нравится это слово, если не ясен смысл – читайте как «связный, логичный, ясный», прим. j2a), поэтому его легче изучать, но компоненты TurboGears существовали и до него и использовались в разных контекстах, так что они дают большую гибкость в TurboGears.

Конкретные требования Вашего приложения влияют на то, какой фреймворк будет лучше для Вас. Но хорошие новости дебатов по поводу Django/TurboGears в том, что они оба достаточно зрелы, и нет причин, которые не позволили бы вам осуществить любую идею, выбери Вы один из них. Вне зависимости от того, каким путем пойдете – с ними Вы будете более продуктивны и будете создавать более сопровождаемый код, чем без них.

--Марк


Это сообщение отредактировал(а) J2A - 22.11.2006, 18:14
--------------------
Be easy, stay cool
PM MAIL WWW Jabber   Вверх
pythonwin
Дата 24.11.2006, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 2
Всего: 36



J2A, спасибо за статью! 
Цитата(J2A @  23.11.2006,  01:13 Найти цитируемый пост)
* Если Вы разрабатываете сайты, где админка Django – то, что Вам нужно в большинстве мест, то это неоспоримая победа Django перед TurboGears, где административный интерфейс придется писать самому.


вот с этим не согласен - в TG есть CatWalk и Web Shell. smile

а вот в TG 0.9a1 и старше CatWalk уже есть, но в TG 0.8.9 админки действительно нет. 

про CatWalk прочитать можно в:
CatWalk 
встраивание CatWalk в проект
TurboTunes tutorial


PS сейчас последняя версия TurboGears 1.0b1 и уже есть идея CatWalk2

Это сообщение отредактировал(а) pythonwin - 24.11.2006, 08:38
PM WWW GTalk Jabber   Вверх
pythonwin
Дата 1.12.2006, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 2
Всего: 36



вот ещё по админовкой части в TG CRUD controller of SQLObject
PM WWW GTalk Jabber   Вверх
Daevaorn
Дата 1.12.2006, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 3
Всего: 70



PM MAIL WWW   Вверх
Страницы: (4) Все 1 2 [3] 4 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Веб-разработка и фреймворки | Следующая тема »


 




[ Время генерации скрипта: 0.2004 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.