Seite 1 von 1

mod_python: änderungen werden nicht übernommen

Verfasst: Dienstag 9. Oktober 2007, 10:32
von kriza80
hallo,


habe ein eingabeinterface (php), dass die anfrage an das form.py/start sendet
(pythonhandler mod_python.publisher).
in diesem modul werden mehrer klassen eingebunden und ausgeführt.

ändere ich eine von ihnen, werden sie nicht übernommen !!??!!
hab noch eine test.py um die klassen außerhalb eines webservers zu testen und da
funktioniert es prächtig.

google war bisher keine hilfe.
wenn man den kompletten server neustartet, werden die änderungen auch übernommen, aber
das ist in der firma definitiv nicht möglich.

hat jemand eine idee oder erfahrung mit diesem umstand?
würde mich freuen, wenn ihr mir eure kreativen ideen unterbreitet

kris

Verfasst: Dienstag 9. Oktober 2007, 12:03
von Leonidas
Hallo kriza80, willkommen im Forum,

Meine Idee: Alte ``*.pyc``-Dateien die noch rumliegen?

Aller Erfahrung nach verschwinden alle Probleme mit ``mod_python`` wenn man auf Sinnvollere Lösungen wie ``FastCGI`` etc. umsteigt. Funktioniert bei WSGI-Programmen fast ohne Aufwand.

Verfasst: Dienstag 9. Oktober 2007, 14:58
von kriza80
hat leider nicht funktioniert, alte pyc zu löschen und neu zu kompilieren.
war leider gezwungen den apache neu zu starten.
werd dem problem bei gelegenheit noch etwas auf den grund gehen, kann ja nicht sein, dass eine modifikation einen system neustart nachsichzieht...

danke Leonidas für die nette begrüßung ^^

Verfasst: Dienstag 9. Oktober 2007, 19:25
von Leonidas
kriza80 hat geschrieben:werd dem problem bei gelegenheit noch etwas auf den grund gehen, kann ja nicht sein, dass eine modifikation einen system neustart nachsichzieht...
Doch. Überleg mal wie der Python-Interpreter aufgebaut ist und wie mod_python funktioniert und dann stellst du fest, dass reloading in dieser Konfiguration nie richtig gut funktionieren kann.

Verfasst: Mittwoch 10. Oktober 2007, 01:40
von Jona
falls du apache nutzt probier mal

MaxRequestsPerChild 1 (http.conf)

das ist aber mit vorsicht zu genießen, vor allem falls du irgendwelche klassen benutzt die nicht davon ausgehen dauern neu geladen zu werden (singletons?)

EDIT... grade übersehen:
wenn man den kompletten server neustartet, werden die änderungen auch übernommen, aber
das ist in der firma definitiv nicht möglich.
du entwickelst die anwendung auf einem server der online ist?
dann solltest du das _nicht_ tun!
installier dir einen extra entwicklungsserver.

Verfasst: Mittwoch 10. Oktober 2007, 11:31
von Leonidas
Jona hat geschrieben:MaxRequestsPerChild 1 (http.conf)

das ist aber mit vorsicht zu genießen, vor allem falls du irgendwelche klassen benutzt die nicht davon ausgehen dauern neu geladen zu werden (singletons?)
Und was wäre dann der Vorteil ggü. CGI? Der Nachteil ist schon mal, dass deine Server-Performance massiv einbricht, auf für statische Dateien, weil er dauernd am Neustarten ist.

Verfasst: Mittwoch 10. Oktober 2007, 12:58
von Jona
das geht natürlich nur auf einem entwicklungsserver, hab ich doch geschrieben...
da ist dann auch die performance egal.
afaik ist das die einzige möglichkeit zu verhindern, dass man dauernd den server neu starten muss nachdem man quellcode geändert hat.

Verfasst: Mittwoch 10. Oktober 2007, 14:39
von Leonidas
Jona hat geschrieben:afaik ist das die einzige möglichkeit zu verhindern, dass man dauernd den server neu starten muss nachdem man quellcode geändert hat.
... WSGI + CGI/FastCGI/SCGI ...

Verfasst: Mittwoch 10. Oktober 2007, 22:49
von Jona
das heisst, wenn ich statt mod_python fastCGI nutze kann ich code ändern und ohne dass der server neu gestartet werden muss sind dei änderungen sichtbar?

Verfasst: Donnerstag 11. Oktober 2007, 08:42
von apollo13
Jona hat geschrieben:das heisst, wenn ich statt mod_python fastCGI nutze kann ich code ändern und ohne dass der server neu gestartet werden muss sind dei änderungen sichtbar?
Jein, der Server muss nicht neu gestartet werden, nur das Handler-Skript.

Aber im Prinzip genau das was du willst (Handlerskript läuft unter deinem User, mit denen Rechten etc...).

Verfasst: Donnerstag 11. Oktober 2007, 13:15
von Leonidas
Jona hat geschrieben:das heisst, wenn ich statt mod_python fastCGI nutze kann ich code ändern und ohne dass der server neu gestartet werden muss sind dei änderungen sichtbar?
Der FastCGI-Server muss neugestartet werden, aber man kann es sogar so einstellen, dass wenn sich etwas am Timestamp des Handlerscripts ändert, dass dann das Skript automatisch neu gestartet wird.

Verfasst: Freitag 12. Oktober 2007, 12:05
von kriza80
hallo.. interesante ansätze.

jedoch sind diese optionen nicht denkbar. auf dem server sind dutzende projekte und die modifikationen die ich durchführen darf sind stark eingeschränkt. zumal die applikation die ich entwickle auf python basiert und sehr komplex ist ...

ich kann es nicht ganz glauben, dass man den server neustarten muss :-)
werd mich nach meiner diplomarbeit bissl mehr damit beschäftigen. gerade hab ich leider keine zeit.. luft brennt ^^

Verfasst: Freitag 12. Oktober 2007, 14:06
von Jona
warum installierst du denn nicht deinen eigenenen apache während der entwicklung?