cheetah verwirrt cgi

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Dienstag 22. Juli 2008, 16:51

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?
cp != mv
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Dienstag 22. Juli 2008, 17:39

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dienstag 22. Juli 2008, 18:57

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 ;)

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Dienstag 22. Juli 2008, 21:02

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?
cp != mv
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Mittwoch 23. Juli 2008, 10:17

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:
cp != mv
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Mittwoch 23. Juli 2008, 19:39

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!!
cp != mv
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Mittwoch 23. Juli 2008, 22:28

Das machen andere WebHoster auch so...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 23. Juli 2008, 22:57

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 :)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 24. Juli 2008, 09:02

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?

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Freitag 25. Juli 2008, 00:13

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/")
cp != mv
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Freitag 25. Juli 2008, 12:29

Hm? Warum mußt du mit python2.5 die 2.4er lib nutzten? Die existieren für 2.5 nicht?

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Freitag 25. Juli 2008, 15:01

MySQLdb gabs nur fuer python2.4
cp != mv
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 25. Juli 2008, 16:09

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Freitag 25. Juli 2008, 17:52

du kriegst eine warnung, anssonstes klappt alles einwandfrei
cp != mv
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Freitag 25. Juli 2008, 22:04

Costi hat geschrieben:du kriegst eine warnung, anssonstes klappt alles einwandfrei
Das ist reines Glücksspiel und funktioniert mit Sicherheit nicht mit allen Architekturen.
Antworten