Seite 1 von 1

cheetah verwirrt cgi

Verfasst: Dienstag 22. Juli 2008, 16:51
von Costi
hallo allerseits,

schreib grad eine web app:
apache -> cgi -> wsgi -> cherrypy -> cheetah -> DAU
:wink:

wenn ich auf die ebene von cherrypy nichts mit cheetah rendere, klappt alles, doch wenn ich cheetah benuzte kirege ich manchmal von apache einen 500 Internal server error.

kann es sein dass cheetah ein paar prints irgendwo hat und das die kommunikation mit cgi via stdout stoert?

irgendwelche ideen?

Re: cheetah verwirrt cgi

Verfasst: Dienstag 22. Juli 2008, 17:39
von gerold
Costi hat geschrieben:apache -> cgi -> wsgi -> cherrypy -> cheetah
Hallo Costi!

Wenn du zum Entwickeln den APACHE/CGI/WSGI-Part weg lässt, also direkt den CherryPy-Server startest, dann bekommst du Fehlermeldungen in der Konsole angezeigt. Vielleicht bringt dich das weiter.

mfg
Gerold
:-)

Verfasst: Dienstag 22. Juli 2008, 18:57
von jens
Ansonten hilft evtl. die Apache error log weiter. Wenn man da keinen Zugriff drauf hat, kann man mal versuchen alle stderr ausgaben in einer Datei um zu leiten.
Was evlt. auch hilft: Als aller erstes einen gültigen Header an den Client schicken. So könnte sich ein Fehler zeigen, der vor dem senden des Headers vorkommt.
Bei CGI, cgitb benutzten ;)

Verfasst: Dienstag 22. Juli 2008, 21:02
von Costi
danke fuer die tips!

Das mit cherrypy`s standalone server wird schwierig, weil ich die mysql datenbank nur vom hoster aus zugriefen kann. also muss man via ssh den server intern starten.
und ich hab auch kein browser oder port forwarding dort.... aber gut wofuer gibts netcat/urllib/wget

stderr leite ich mit

Code: Alles auswählen

import sys
sys.stderr = open("errors.txt", "w")
um?

Verfasst: Mittwoch 23. Juli 2008, 10:17
von Costi
wenn ich lokal den cherrypy server laufen lasse klappt alles wie geschmiert,
nur auf dem web hoster (1und1) verursacht cheetah unter bestimmten bedingungen den internal server error
stderr liefert keine informationen
:cry: :cry: :cry: :cry: :cry:

Verfasst: Mittwoch 23. Juli 2008, 19:39
von Costi
Ich hab dem bug endlich!
und zwar bricht 1und1 anfragen, die zu viel rechenleistung kosten einfach mit einem internal server error ab!

ich hab 22 - `time(zwei mal doener holen)` stunden gebraucht um darauf zu kommen!!

Verfasst: Mittwoch 23. Juli 2008, 22:28
von jens
Das machen andere WebHoster auch so...

Verfasst: Mittwoch 23. Juli 2008, 22:57
von Leonidas
Naja, normalerweise braucht man zum Rendern einer Webseite auch nicht so viel Rechenleistung. Das ist auch von der Usability recht mies, wenn der User ewig warten muss.

Jetzt kannst du mal gucken, ob sich mit Jinja oder Mako noch etwas Leistung herausholen lässt :)

Verfasst: Donnerstag 24. Juli 2008, 09:02
von jens
Ich bin bisher auch nur einmal an die Limitierung gestoßen. Mit dem find&replace Plugin kann man in allen CMS Seiten einen String suchen und ersetzten lassen. Angezeigt wird dann ein Diff der Seite. Je nach dem wie viele Treffer man hat und wie niedrig das Limit ist, hat man ein Problem.

@Costi: Was macht denn deine WebApp?

Verfasst: Freitag 25. Juli 2008, 00:13
von Costi
die web app sendet zwei sql queries... und zeigt dan die ergebnisse der zweiten query an....
viel mehr kann ich leider nicht sagen

eigentlich nichts wirklich rechenintensives, wahrscheinlich verursacht wsgi->cherrypy->Cheetah den zu grossen overhead zumal 1und1 wahrscheinlich von einer benutzung von "raw" cgi ausgeht


bei der gelegenheit kann ich vieleicht noch einen kleinen tip geben - wuerde mich interessieren wo dies sonst noch moeglich ist:
offiziel wird nur python 2.4 untertuetzt.
/usr/bin/python ist ein link zu /usr/bin/python2.4
aber siehe da es gibt auch /usr/bin/python2.5

also koennen wir python 2.5 benutzen:

Code: Alles auswählen

#!/usr/bin/python2.5

import sys
sys.path.append("/usr/lib/python2.4/site-packages/")
sys.path.append("/usr/lib/python2.4/")

Verfasst: Freitag 25. Juli 2008, 12:29
von jens
Hm? Warum mußt du mit python2.5 die 2.4er lib nutzten? Die existieren für 2.5 nicht?

Verfasst: Freitag 25. Juli 2008, 15:01
von Costi
MySQLdb gabs nur fuer python2.4

Verfasst: Freitag 25. Juli 2008, 16:09
von Leonidas
Ein C-Modul das gegen Python 2.4 gelinkt ist, wird aber nicht mit Python 2.5 funktionieren und MySQLdb enthält ``_mysql``, was eben ein solches Modul ist.

Verfasst: Freitag 25. Juli 2008, 17:52
von Costi
du kriegst eine warnung, anssonstes klappt alles einwandfrei

Verfasst: Freitag 25. Juli 2008, 22:04
von Trundle
Costi hat geschrieben:du kriegst eine warnung, anssonstes klappt alles einwandfrei
Das ist reines Glücksspiel und funktioniert mit Sicherheit nicht mit allen Architekturen.