Es ist wohl so eine typische Frage, worauf meist eine Antwort mit lmgtfy.com kommt, aber ich wage es sie trotzdem zu stellen.
Ich verzweifle langsam aber sicher. Mit PHP kenne ich mich ein wenig aus, zumindest kenne ich das Prinzip. Auch Python meine ich, beherrsche ich inzwischen ganz gut, aber hier bin ich jetzt total ratlos oder steh auf dem Schlauch.
Hab mir vor ein paar Wochen ein wenig Webspace bei Raumopol.de gemietet, in der Hoffnung in nächster Zeit mich mit der Webentwicklung in Python zu beschäftigen (unter anderem), aber ich schaffe es einfach nicht, etwas anderes als ein einfaches "Hello world" aus dem Server herauszukitzeln. Ich habe die Möglichkeit ein vorgefertigtes Django template zu installieren, welches auch funktioniert. Die technische Grundlage ist also vorhanden und funktioniert. Aber wenn ich mit Bottle oder flup (also über fcgi) ein "Hello World" sehen möchte, sehe ich immer nur einen 500er Server-Fehler. Exceptions hab ich auch schon versucht abzufangen, klappt aber entweder nicht oder es gibt keine.
Naja, deshalb die Frage:
- Was gibt es für Tutorials, Beispiele oder wasweißich, bei denen man sagen kann, die "sollten" funktionieren? Ich hab bei Google einiges gefunden, aber keine Tutorials, mal abgesehen von denen der Frameworks (Bottle, Django), die allerdings nicht wirklich funktionierten. Auch im Wiki hier hab ich schon einiges gelesen.
- Ist hier jemand ebenfalls bei Raumopol und kann mir ein paar Tipps geben? (Hatte da mal nen Blogeintrag über Google gefunden, verfasst von einem gewissen "burli" )
Ganz allgemein, glaube ich, fehlen mir wohl schlicht die Grundlagen für Python und FastCGI, finde aber nichts womit ich mir die erarbeiten könnte.
Python zur Webentwicklung benutzen, wie geht das?
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Speziell bei einem 500er Fehler musst Du Dir mal das Log ansehen. Das ist oftmals ein Fehler, der das Programm abbrechen lässt. Allerdings bieten doch viele Frameworks auch einschaltbare Debug-Infos?!? Evtl. klappt das nicht bei Syntax-Fehlern. Letzteres kannst Du ja aber lokal leicht testen, wo Du eine Konsole hast.
Also: Erst einmal lokal entwickeln (Demos / Tests laufen lassen), danach deployen. Sollte also lokal alles laufen und auf dem Server dann nicht, wird es vermutlich an nicht verfügbaren Modulen oder falschen Versionen von Libs oder gar Python liegen.
Also: Erst einmal lokal entwickeln (Demos / Tests laufen lassen), danach deployen. Sollte also lokal alles laufen und auf dem Server dann nicht, wird es vermutlich an nicht verfügbaren Modulen oder falschen Versionen von Libs oder gar Python liegen.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
- noisefloor
- User
- Beiträge: 3854
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
wenn was lokal läuft und aufm Server nicht kann das auch ganz triviale Gründe haben.
Mein Lieblingsfehler ist, dass ich beim Deployment von Bottle lokal -> Server + WSGI im Quelltext vergesse, ein `print` Statement zu Löschen (was z.B. noch vom Debuggen drin war). Dann wirft der Apache einen 500er, weil bei mod_wsgi i.d.R. eine Ausgabe auf stdout (was print ja meistens macht...) verboten ist. Nimmt man's raus, läuft alles.
Ansonsten halt immer die Doku für dein Webframework lesen, dort wir eigentlich immer erklärt, wie man sein Prog via FastCGI oder WSGI laufen lässt.
Gruß, noisefloor
wenn was lokal läuft und aufm Server nicht kann das auch ganz triviale Gründe haben.
Mein Lieblingsfehler ist, dass ich beim Deployment von Bottle lokal -> Server + WSGI im Quelltext vergesse, ein `print` Statement zu Löschen (was z.B. noch vom Debuggen drin war). Dann wirft der Apache einen 500er, weil bei mod_wsgi i.d.R. eine Ausgabe auf stdout (was print ja meistens macht...) verboten ist. Nimmt man's raus, läuft alles.
Ansonsten halt immer die Doku für dein Webframework lesen, dort wir eigentlich immer erklärt, wie man sein Prog via FastCGI oder WSGI laufen lässt.
Gruß, noisefloor
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
Bist du sicher, das flup auch installiert ist? Bottle kann von sich aus nur CGI und HTTP. Für Dinge wie fastcgi brauchst du die entsprechenden Abhängigkeiten (flup).
Bottle: Micro Web Framework + Development Blog
@Hyperion
Gut, werd ich mal wieder xampp rauskramen. Wollte damit zwar noch etwas warten, bis ich was größeres mache, aber in dem Fall ists wohl wirklich ne Erleichterung.
@Defnull
Naja, sicher bin ich mir nicht. Ich bilde mir allerdings ein irgendwo mal gelesen zu haben, dass Django flup benötigt um FastCGI zu beherrschen. Und Django tut ja wunderbar.
Gut, werd ich mal wieder xampp rauskramen. Wollte damit zwar noch etwas warten, bis ich was größeres mache, aber in dem Fall ists wohl wirklich ne Erleichterung.
Ahja, das könnte eine Erklärung sein für so manche Seltsamkeitennoisefloor hat geschrieben:Mein Lieblingsfehler ist, dass ich beim Deployment von Bottle lokal -> Server + WSGI im Quelltext vergesse, ein `print` Statement zu Löschen (was z.B. noch vom Debuggen drin war). Dann wirft der Apache einen 500er, weil bei mod_wsgi i.d.R. eine Ausgabe auf stdout (was print ja meistens macht...) verboten ist. Nimmt man's raus, läuft alles.
@Defnull
Naja, sicher bin ich mir nicht. Ich bilde mir allerdings ein irgendwo mal gelesen zu haben, dass Django flup benötigt um FastCGI zu beherrschen. Und Django tut ja wunderbar.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Äh... Du weißt schon, dass man WSGI-Apps mit dem eingebauten Webserver von Python testen kann? Ok, zumindest die Rahmenwerke, die ich bisher verwendet habe konnten das. Das ist ja grad das schöne; man muss eben nix deployen, sondern kann die App an sich erst einmal testen. Sollte die dann fehlerfrei laufen, kann man Programmierfehler schon ausschließen.Gremlin hat geschrieben:@Hyperion
Gut, werd ich mal wieder xampp rauskramen. Wollte damit zwar noch etwas warten, bis ich was größeres mache, aber in dem Fall ists wohl wirklich ne Erleichterung.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Vielleicht solltest Du Dir das Tutorial zu bottle doch noch mal durcharbeiten?Gremlin hat geschrieben:Jetzt wo du es erwähnst.. ja, habe ich irgendwo irgendwann mal gelesen
Gut, Gut, dann ists ja noch einfacher.
Ansonsten hat flask da auch ein ausführliches Tutorial inkl. Tipps zum Debuggen via JavaScript Shell
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert