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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> turbogears и fcgi 
:(
    Опции темы
alrond
  Дата 2.10.2006, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Столкнулся с первым камнем...после небольших плясок с бубном поставил TG на Debian с Python 2.3.5
Как сервер через turbogears.start_server(Root()) запустить смог, связка с nginx-ом как проксей тоже без проблем заработала (я не говорю конечно о о-о-очень низкой сокрости smile )
Попытался запустить как FCGI используя официальный мануал здесь
http://docs.turbogears.org/1.0/LightTPD
Код

#!/usr/bin/env python
import pkg_resources
import cherrypy
import sys

pkg_resources.require("TurboGears")

from cherrypy._cpwsgi       import wsgiApp
from flup.server.scgi_fork  import WSGIServer
from os.path                import *

if len(sys.argv) > 1:
    cherrypy.config.update(file=sys.argv[1])
elif exists(join(dirname(__file__), "setup.py")):
    cherrypy.config.update(file="dev.cfg")
else:
    cherrypy.config.update(file="prod.cfg")

from ProjectName.controllers import Root

cherrypy.root = Root()

cherrypy.server.start(initOnly=True, serverClass=None)

WSGIServer(application=wsgiApp).run()


Не запускает сервер, ругается 
Код

2006-10-02 14:29:55 : WSGIServer starting up
Traceback (most recent call last):
  File "./start-scgi.py", line 25, in ?
    WSGIServer(application=wsgiApp).run()
  File "/usr/lib/python2.3/site-packages/flup-0.5-py2.3.egg/flup/server/scgi_fork.py", line 141, in run
    ret = PreforkServer.run(self, sock)
  File "/usr/lib/python2.3/site-packages/flup-0.5-py2.3.egg/flup/server/preforkserver.py", line 121, in run
    if not self._spawnChild(sock): break
  File "/usr/lib/python2.3/site-packages/flup-0.5-py2.3.egg/flup/server/preforkserver.py", line 268, in _spawnChild
    parent, child = socket.socketpair()
  File "/usr/lib/python2.3/site-packages/flup-0.5-py2.3.egg/flup/server/preforkserver.py", line 47, in socketpair
    s1, s2 = eunuchs.socketpair.socketpair()
AttributeError: 'module' object has no attribute 'socketpair'

Я конечно понимаю, что socketpair не работает с 2.3 питоном, но при инсталлировании было сказано, что TG все же работат c этой версией, хотя и рекомендуют 2.4

и еще один вариант FCGI
Код

#!/usr/bin/env python
import pkg_resources
pkg_resources.require("TurboGears")

import turbogears
import cherrypy
cherrypy.lowercase_api = True

from os.path import *
import sys

# first look on the command line for a desired config file,
# if it's not on the command line, then
# look for setup.py in this directory. If it's not there, this script is
# probably installed
if len(sys.argv) > 1:
    turbogears.update_config(configfile=sys.argv[1],
        modulename="projekt.config.app")
elif exists(join(dirname(__file__), "setup.py")):
    cherrypy.config.update(file="dev.cfg")   /// здесь я заменил из прошлого примера, иначе вообще не работает
else:
    turbogears.update_config(configfile="prod.cfg",
        modulename="projekt.config.app")

from projekt.controllers import Root
from cherrypy._cpwsgi import wsgiApp
#from paste.util.scgiserver import serve_application
from flup.server.scgi  import WSGIServer
#from flup.server.scgi_fork  import WSGIServer

port = 8900
if len(sys.argv) > 2:
    port = int(sys.argv[2])

cherrypy.config.update({
'global': {
    'autoreload.on': False,
}})
cherrypy.root = Root()
cherrypy.server.start(initOnly=True, serverClass=None)
#serve_application(application=wsgiApp, prefix='/', port=port)

Этот вариант запускается, но 
CGI выплевывает
Код

2006-10-02 14:35:38 : Protocol error 'invalid netstring length'
2006-10-02 14:35:38,794 scgi-wsgi ERROR Protocol error 'invalid netstring length'

А nginx выдает в error-лог
Код

2006/10/02 14:35:38 [error] 22964#0: *178195 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 222.222.222.222, server: server.com, URL: "/", upstream: "http://127.0.0.1:8900/", host: "server.com"


Какие могут быть идеи?
PM MAIL   Вверх
pythonwin
Дата 2.10.2006, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



alrond, покажи какие у тебя пакеты для TG стоят.
PM WWW GTalk Jabber   Вверх
alrond
Дата 2.10.2006, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

TurboGears requires:

* TurboGears 1.0b1
* nose 0.9.0
* configobj 4.3.2
* RuleDispatch 0.5a0.dev-r2115
* setuptools 0.6c2
* FormEncode 0.6
* cElementTree 1.0.5-20051216
* PasteScript 0.9.8
* elementtree 1.2.6-20050316
* simplejson 1.4
* SQLObject 0.7.1
* CherryPy 2.2.1
* TurboKid 0.9.9
* TurboCheetah 0.9.5
* TurboJson 0.9.9
* PyProtocols 1.0a0
* Cheetah 2.0rc7
* PasteDeploy 0.9.6
* Paste 0.9.8.1
* FormEncode 0.6
* kid 0.9.3
* Cheetah 2.0rc7
* elementtree 1.2.6-20050316

Identity Providers

* sqlobject (TurboGears 1.0b1)
* sqlalchemy (TurboGears 1.0b1)

tg-admin Commands

* info (TurboGears 1.0b1)
* shell (TurboGears 1.0b1)
* quickstart (TurboGears 1.0b1)
* update (TurboGears 1.0b1)
* sql (TurboGears 1.0b1)
* i18n (TurboGears 1.0b1)
* toolbox (TurboGears 1.0b1)

Visit Managers

* sqlobject (TurboGears 1.0b1)
* sqlalchemy (TurboGears 1.0b1)

Template Engines

* kid (TurboKid 0.9.9)
* cheetah (TurboCheetah 0.9.5)
* json (TurboJson 0.9.9)

Widget Packages


TurboGears Extensions

* visit (TurboGears 1.0b1)
* identity (TurboGears 1.0b1)



Код

user:/usr/lib/python2.3/site-packages# ls -1
Cheetah-2.0rc7-py2.3-linux-i686.egg
CherryPy-2.2.1-py2.3.egg
configobj-4.3.2-py2.3.egg
elementtree-1.2.6_20050316-py2.3.egg
flup-0.5-py2.3.egg
FormEncode-0.6-py2.3.egg
kid-0.9.3-py2.3.egg
nose-0.9.0-py2.3.egg
Paste-0.9.8.1-py2.3.egg
PasteDeploy-0.9.6-py2.3.egg
PasteScript-0.9.8-py2.3.egg
PyProtocols-1.0a0-py2.3-linux-i686.egg
RuleDispatch-0.5a0.dev_r2115-py2.3-linux-i686.egg
scgi-1.11-py2.3-linux-i686.egg
setuptools-0.6c1-py2.3.egg
setuptools-0.6c2-py2.3.egg
simplejson-1.4-py2.3.egg
SQLObject-0.7.1-py2.3.egg
TurboCheetah-0.9.5-py2.3.egg
TurboGears-1.0b1-py2.3.egg
TurboJson-0.9.9-py2.3.egg
TurboKid-0.9.9-py2.3.egg
eunuchs
psyco


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


Эксперт
****


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

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



как я понял у тебя python2.3 smile
а почему не поставишь python2.4 (советую 2.4.2 или 2.4.3)?

Это сообщение отредактировал(а) pythonwin - 2.10.2006, 16:09
PM WWW GTalk Jabber   Вверх
pythonwin
Дата 2.10.2006, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



alrond, если говорить чесно, то я никогда не использовал FCGI, а если нужно было сделать по-быстрей, то разбирался с HTML, JS и AJAX smile
PM WWW GTalk Jabber   Вверх
J2A
Дата 2.10.2006, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



В терминологии силен? FCGI и SCGI разные вещи. По коду видно, что в TG ты поднимаешь SCGI. Покажи конфиг nginx, может ты там пытаешься FCGI сделать smile

P.S. pythonwin, ну ты вообще, отец smile 
"""
Q. Как при помощи X сделать A?
A. Пользуй Z! Z рулит!
"""
--------------------
Be easy, stay cool
PM MAIL WWW Jabber   Вверх
pythonwin
Дата 2.10.2006, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(J2A @  2.10.2006,  23:57 Найти цитируемый пост)
P.S. pythonwin, ну ты вообще, отец smile 
"""
Q. Как при помощи X сделать A?
A. Пользуй Z! Z рулит!
""" 

не понял? 
поясни, пожалуйста! smile
PM WWW GTalk Jabber   Вверх
pythonwin
Дата 2.10.2006, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



http://forum.textdrive.com/viewtopic.php?id=11706
Цитата

Also note that Python threads are real OS threads, so in many cases each thread shows up as a separate line in the output of `ps`. There is a chance that Django's FCGI handling is just creating a little thread pool so that it can handle more requests. TurboGears' built-in web server does the same.


http://www.thesamet.com/blog/2006/04/15/ho...ns-on-bluehost/
PM WWW GTalk Jabber   Вверх
alrond
Дата 4.10.2006, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(J2A @ 2.10.2006,  16:57)
В терминологии силен? FCGI и SCGI разные вещи. По коду видно, что в TG ты поднимаешь SCGI. Покажи конфиг nginx, может ты там пытаешься FCGI сделать smile

Блин, и правда не доглядел smile))
Но эти скрипты все равно не работают, нашел один, который все равно надо исправить

Вот здесь листинг скрипта
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()


в таком виде он пригоден  smile 
PM MAIL   Вверх
pythonwin
Дата 4.10.2006, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



alrond, что - всё работает?
PM WWW GTalk Jabber   Вверх
alrond
Дата 4.10.2006, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



да, работает...только вот результаты пока удручающие...
я раньше думал, что TG медленный, потому что через прокси идет, но теперь вижу, что не из-за этого...
Пока это только очень грубые предварительные данные, но...
в общем TG медленнее чем Django примерно в 8 раз!!! (это на голых страницах, по дефолту)
подробности и нормальный тест позже...
PM MAIL   Вверх
pythonwin
Дата 4.10.2006, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(alrond @  4.10.2006,  21:42 Найти цитируемый пост)
да, работает...только вот результаты пока удручающие...
я раньше думал, что TG медленный, потому что через прокси идет, но теперь вижу, что не из-за этого...
Пока это только очень грубые предварительные данные, но...
в общем TG медленнее чем Django примерно в 8 раз!!! (это на голых страницах, по дефолту)
подробности и нормальный тест позже... 

ещё пожалуйста, выложи сами проекты - думаю есть проблема в коде. smile
PM WWW GTalk Jabber   Вверх
alrond
Дата 4.10.2006, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



добавлю, что оба запущены как FCGI серверы с использованием Flup. 
вполне возможно, что что-то я настроил не так...

наблюдаю еще один неприятный эффект у обоих - при большой нагрузке FCGI зависают и не реагируют на запросы, приходится убивать процесс.
для Django это например при  ab -c 8 -n 100 http://server.com/
при параметре с=7 работает

Добавлено @ 15:09 
проектов пока нет, поэтому я и говорил, что это не настоящие тесты...
все пока по дефолту  smile 
PM MAIL   Вверх
alrond
Дата 4.10.2006, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



http_load-12mar2006# http_load -rate 10 -seconds 10 django
99 fetches, 1 max parallel, 203247 bytes, in 10 seconds
2053 mean bytes/connection
9.9 fetches/sec, 20324.7 bytes/sec
msecs/connect: 0.0565455 mean, 0.137 max, 0.047 min
msecs/first-response: 1.4821 mean, 2.153 max, 1.362 min
HTTP response codes:
  code 404 -- 99


http_load-12mar2006# http_load -rate 10 -seconds 10 turbogears
99 fetches, 1 max parallel, 308088 bytes, in 10 seconds
3112 mean bytes/connection
9.9 fetches/sec, 30808.8 bytes/sec
msecs/connect: 0.0670202 mean, 0.162 max, 0.054 min
msecs/first-response: 16.1312 mean, 18.394 max, 15.703 min
HTTP response codes:
  code 200 -- 99



И еще раз повторюсь - это нельзя считать за результаты...так как ни одна страничка не настроена, ни одного проектика...
это так, для затравки  smile 
PM MAIL   Вверх
pythonwin
Дата 4.10.2006, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



alrond, выложи, пожалуйста, результаты в Сравнение TurboGears и Django
PM WWW GTalk Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




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


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

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