[bottle] Startschwierigkeiten

Django, Flask, Bottle, WSGI, CGI…
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

Um die 'Bottle server starting up' Nachricht zu unterdrücken, kannst du noch ein quiet=True zu run() hinzu fügen. host und port macht in einer CGI Umgebung keinen Sinn. Das print am Anfang eben so wenig. Und wenn du "from bottle import ..." am Anfang schreibst, wird "bottle.CGIServer" auch nicht funktionieren da du "bottle" an sich ja noch nicht importiert hast.

Kann natürlich sein, das bottle.CGIServer gar nicht funktioniert. Ich hab es nie getestet, da ich nie auf die Idee gekommen wäre, das es wirklich jemand nutzen will.
Bottle: Micro Web Framework + Development Blog
Benutzeravatar
lynadge
User
Beiträge: 112
Registriert: Sonntag 4. April 2010, 10:17

Hah, es geht. :)

Hab jetzt bottle mal komplett Importiert.

Code: Alles auswählen

#!/usr/bin/python

import bottle

@bottle.route('/')
def index():
    return '<h1>Hello World!</h1>'

bottle.run(server=bottle.CGIServer)
http://python.barfooz.de/main.py

Wie kann ich das Script jetzt für WSGI umschreiben? Denn nach der Dokumentation Funktioniert das bei mir nicht. :/ http://bottle.paws.de/page/docs#using-w ... middleware
Benutzeravatar
noisefloor
User
Beiträge: 4149
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Nur sehe ich da nicht gant durch wie bottle mit WSGI Funktionieren soll.
Schau mal in die Doku oder ins Tutorial. Da steht es drin. :-) Also wie es mit WSGI läuft.

Je nach dem, wie der Apache konfiguriert ist muss du (oder der Admin) aber noch an die Apache Konfiguration ran, um deiner Applikationen einen Pfad zuzuweisen.

Gruß, noisefloor
Benutzeravatar
lynadge
User
Beiträge: 112
Registriert: Sonntag 4. April 2010, 10:17

http://bottle.paws.de/page/docs#using-w ... middleware Das?

Wenn es das sein soll, dann bin ich glaube ich zu doof das zu verstehen.

Ist da nicht schon was am Server anders eingestellt, wenn nicht einmal ein Example Funktioniert wie das:

Code: Alles auswählen

#!/usr/bin/python

import bottle

@bottle.route('/')
def index():
    return 'Hello World!'

bottle.run()
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

deadshox, doch, da stimmt was mit der Server-Konfiguration nicht (also nicht mit dem WSGI-Server, sondern mit einem anderen Server). Lass den Server mal auf irgendeinem "zufälligen" Port laufen, zum Beispiel 9876 und versuche das dann mal aufzurufen.

Wenn das dann klappen sollte und aber auf einem anderen Port (8080 oder 80 oder so) nicht, dann riecht das stark danach, dass da noch mal ein Server dazwischen steht, der die ganzen Anfragen an die Adresse irgendwo anders hinleitet.
Benutzeravatar
noisefloor
User
Beiträge: 4149
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Ist da nicht schon was am Server anders eingestellt, wenn nicht einmal ein Example Funktioniert wie das:
Nein. Das Beispiel startet den Stand-Alone Server, den Bottle mitbringt. Das ist nicht WSGI.

Lies' mal hier: http://github.com/defnull/bottle/blob/m ... utorial.md ab dem Punkt "Server Setup"

Gruß, noisefloor
Benutzeravatar
lynadge
User
Beiträge: 112
Registriert: Sonntag 4. April 2010, 10:17

@dauerbaustelle, ich bekomme nur bei Port 80 eine Korrekte Antwort.

Also z.b. http://python.barfooz.de:80 geht, http://python.barfooz.de:1234 geht nicht.

@noisefloor, danke, das werde ich mir mal anschauen. :)
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

deadshox, "korrekte Antwort"? Was meinst du damit?
Benutzeravatar
lynadge
User
Beiträge: 112
Registriert: Sonntag 4. April 2010, 10:17

Na, es gab bei Port 80 keine Fehler wie bei Port 1234.
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

deadshox hat geschrieben:Na, es gab bei Port 80 keine Fehler wie bei Port 1234.
Sag mal, muss man aus dir denn alles rauskitzeln? Welche Fehler? Was hat mit Port 80 funktioniert und was mit dem anderen Port nicht? Für alle Fehler bitte die ganze Fehlermeldung posten, sofern noch nicht bereits getan.

Danke :-/
Benutzeravatar
lynadge
User
Beiträge: 112
Registriert: Sonntag 4. April 2010, 10:17

Ich habe doch oben die Links mit rein gepackt, wenn du dort drauf drückst komm bei Port 80 ein "403 Forbidden", was ja auch regulär ist, da dort keine index.* existiert. Und wenn du den Link mit Port 1234 aufrufst kommt ein, im Firefox, Seitenladefehler. Was ja bedeutet das er den Server mit diesem Port nicht erreichen kann.

Sorry falls ich mich falsch ausgedrückt habe. ^^
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Hoooorks... läuft auf Port 80 ein Bottle-Server/WSGI-Server mit bottle drunter? Und auf dem anderen Port? Und für beide die entsprechenden Teile aus den Server-Error-Logs bitte!

Soll man den Fehler riechen oder was?!
Benutzeravatar
lynadge
User
Beiträge: 112
Registriert: Sonntag 4. April 2010, 10:17

Ok, wir haben aneinander vorbei geredet.

Wenn ich das Script:

Code: Alles auswählen

#!/usr/bin/python

import bottle

@bottle.route('/')
def index():
    return 'Hello World!'

bottle.run()
mit "bottle.run(port=80)" und mit "bottle.run(port=1234)" aufrufe gibts in beiden fällen ein:
server hat geschrieben:Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, ... and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
Mit den error logs kann ich nicht dienen, da ich keinen Zugriff darauf habe.

Ich hoffe das wir jetzt das selbe meinem. ;)
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Wie bereits gesagt, eine solche Fehlermeldung wird mit Sicherheit nicht von bottle oder einer damit verbundenen Komponente generiert. Es muss ein Proxy dazwischengeschaltet sein oder sowas, der falsch umleitet. Red mal mit deinem Admin :-)
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Dauerbaustelle hat geschrieben:Wie bereits gesagt, eine solche Fehlermeldung wird mit Sicherheit nicht von bottle oder einer damit verbundenen Komponente generiert. Es muss ein Proxy dazwischengeschaltet sein oder sowas, der falsch umleitet. Red mal mit deinem Admin :-)
Uhm, das ist eine generische 500er Meldung, die zb. auch dann erscheint wenn deine App einen error schmeißt… (Solang debugging Features der betreffenden Frameworks deaktiviert sind…)
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

Um es nochmal zu wiederholen: `bottle.run()` startet einen webserver. In einer WSGI Umgebung darf run() natürlich nicht ausgeführt werden.
Bottle: Micro Web Framework + Development Blog
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

apollo13 hat geschrieben: Uhm, das ist eine generische 500er Meldung
Du meinst vom Browser oder was?
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Dauerbaustelle hat geschrieben:
apollo13 hat geschrieben: Uhm, das ist eine generische 500er Meldung
Du meinst vom Browser oder was?
Nein, vom Webserver
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

apollo13 hat geschrieben:Nein, vom Webserver
Ja aber das ist doch was ich die ganze Zeit sage, mit dem bottle-Server sieht die 500er-Meldung ganz anders aus, und er verwendet den bottle-Default-Server laut Codesnippet. Da muss als ein anderer Server misskonfiguriert sein.
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Nein, sein example ist bullshit, wie defnull schon $x mal sagte darf er nicht bottle.run verwenden sondern etwas ala application = bottle.whatever() sonst kennt sich mod_wsgi nicht mehr aus… Somit kommt es erst gar nicht bis zu nem Bottle error, weil mod_wsgi das nichtmal initialisieren kann!
Antworten