Seite 2 von 4

Verfasst: Freitag 9. April 2010, 11:17
von Defnull
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.

Verfasst: Freitag 9. April 2010, 11:38
von lynadge
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

Verfasst: Samstag 10. April 2010, 20:19
von noisefloor
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

Verfasst: Sonntag 11. April 2010, 04:23
von lynadge
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()

Verfasst: Sonntag 11. April 2010, 12:18
von Dauerbaustelle
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.

Verfasst: Sonntag 11. April 2010, 20:05
von noisefloor
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

Verfasst: Sonntag 11. April 2010, 20:26
von lynadge
@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. :)

Verfasst: Sonntag 11. April 2010, 21:03
von Dauerbaustelle
deadshox, "korrekte Antwort"? Was meinst du damit?

Verfasst: Sonntag 11. April 2010, 21:42
von lynadge
Na, es gab bei Port 80 keine Fehler wie bei Port 1234.

Verfasst: Sonntag 11. April 2010, 21:48
von Dauerbaustelle
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 :-/

Verfasst: Sonntag 11. April 2010, 22:01
von lynadge
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. ^^

Verfasst: Sonntag 11. April 2010, 22:05
von Dauerbaustelle
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?!

Verfasst: Sonntag 11. April 2010, 22:13
von lynadge
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. ;)

Verfasst: Sonntag 11. April 2010, 23:50
von Dauerbaustelle
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 :-)

Verfasst: Montag 12. April 2010, 17:27
von apollo13
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…)

Verfasst: Montag 12. April 2010, 17:43
von Defnull
Um es nochmal zu wiederholen: `bottle.run()` startet einen webserver. In einer WSGI Umgebung darf run() natürlich nicht ausgeführt werden.

Verfasst: Montag 12. April 2010, 17:48
von Dauerbaustelle
apollo13 hat geschrieben: Uhm, das ist eine generische 500er Meldung
Du meinst vom Browser oder was?

Verfasst: Montag 12. April 2010, 19:18
von apollo13
Dauerbaustelle hat geschrieben:
apollo13 hat geschrieben: Uhm, das ist eine generische 500er Meldung
Du meinst vom Browser oder was?
Nein, vom Webserver

Verfasst: Montag 12. April 2010, 19:33
von Dauerbaustelle
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.

Verfasst: Dienstag 13. April 2010, 10:00
von apollo13
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!