Bottle: Micro Web Framework

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

Code: Alles auswählen

[9;0]Bottle server starting up (using WSGIRefServer())...
Listening on http://81.xxx.xxx.xxx:8080/
Use Ctrl-C to quit.

Traceback (most recent call last):
  File "/home/mike/todo.py", line 923, in <module>
    run(hostp='81.xxx.xxx.xxx', port=8080)
  File "/home/mike/bottle.py", line 1561, in run
    server.run(app)
  File "/home/mike/bottle.py", line 1349, in run
    srv = make_serve
Ubuntu 10.04.1 LTS hv-host-strato-1 ttyS0
make_server() ist eine Funktion von wsgiref.simple_server und scheitert wahrscheinlich dabei, an den entsprechenden netzwerk-port zu binden. Das ist natürlich grob geraten, da die Fehlermeldung mitten drin abbricht. Munter weiter spekuliert würde ich mal darauf tippen, das der Server seine IP per DCHP bezieht und zum Zeitpunkt des Skriptes noch nicht bezogen hat. Daher scheitert das Binden an '81.xxx.xxx.xxx'. '0.0.0.0' könnte dagegen funktionieren. Einen Versuch wäre es wert.

rc.local ist unter Ubuntu übrigens als veraltet (deprecated) markiert. Soweit ich weiß, ist upstart ( http://upstart.ubuntu.com/getting-started.html ) der neue Standard, init-scripte funktionieren aber weiterhin.
Bottle: Micro Web Framework + Development Blog
MrNiceTry
User
Beiträge: 80
Registriert: Samstag 7. November 2009, 10:32

Hallo Defnull.

Danke für Deine spontane Unterstützung.

Habe die 0.0.0.0 Variante getestet.
Startet und läuft. Aber zu gut...
Bottle zeigt seine übliche Startmeldung in der Remoteconsole.
Diese ist aber ab sofort eingefroren. Die normalerweise angezeigte Login-Aufforderung kommt nicht mehr.
Bottle lässt sich mit ctrl-C NICHT abbrechen.

rc.local war ein Vorschlag hier aus dem Forum.

Ich schaue mir upstart jetzt mal genauer an und berichte dann.


Danke.

MrNiceTry
Benutzeravatar
noisefloor
User
Beiträge: 4327
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

Upstart ist dazu da, die ganzen Dienst beim Systemstart hochzufahren (z.B. NetworkManager, MySQL, Apache etc. - was halt so installiert ist). Wenn du Bottle bzw. den Bottle-Server nicht als Dienst starten willst, dann brauchst du kein Upstart.

Leider sind die Server von ubuntuuser.de gerade down :? aber lies' doch mal den Artikel zu Autostart - das könnte was für dich sein.

Gruß, noisefloor
MrNiceTry
User
Beiträge: 80
Registriert: Samstag 7. November 2009, 10:32

Hallo noisefloor.


Dienst oder nicht Dienst, das ist hier die Frage?

Was macht denn mehr Sinn? Bottle als Dienst oder Anwendung?

Ich bin nicht in der Lage das zu beurteilen.

Am Schluß ist Bottle doch ein Webserver.
Und Webserver sind doch eigentlich mehr ein Dienst. Oder ?
Benutzeravatar
noisefloor
User
Beiträge: 4327
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Am Schluß ist Bottle doch ein Webserver.
Nee, isses nicht. Bottle ist ein Web Framework, dass halt auch mittels Bottle "erzeuge Seiten" (bzw. genau genommen Responses) über diverse Webserver, wie z.B. den Python WSGI Referenzserver, liefern kann.

Wenn du den Applikation als Dienst laufen lassen willst - was ja durchaus sinnvoll sein kann - warum bindest du Sie dann nicht direkt an einen "richtigen" Webserver wie z.B. Apache. Die nötigen Rechte hast du auf dem Rechner ja scheinbar, sonst hättest du keinen Zugriff auf die Upstart Jobs. Das ist a) performanter und b) wesentlich einfacher. ;-)

Gruß, noisefloor
MrNiceTry
User
Beiträge: 80
Registriert: Samstag 7. November 2009, 10:32

Ich habe mich für Bottle entschieden, weil es so schlank ist.

Es muß eine ganze Reihe von VM's auf einem Host laufen.
Auf jeder VM ist ein Bottle für die Netzanbindung und Administration der jeweiligen Anwenung auf der VM's.

Ich möchte vermeiden auf jeder VM einen Apache installiert zu haben, der Platz braucht und dafür eigentlich nix zu tun hat.

Und da Bottle ja diesen praktischen eigenen Run-Modus hat spricht doch nichts dagegen, oder.
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

Natürlich ist Bottle auch ein Webserver, wenn man ihn als solchen startet. Und damit auch ein Dienst.
Da Bottle aber im Vordergrund bleibt und blockiert, solange er läuft, muss man ihn entweder mit upstart starten oder mit start-stop-daemon in den Hintergrund verbannen.

Code: Alles auswählen

start-stop-daemon --start --background --chdir /var/www/bottle --startas ./app.py --group www-data --chuid www-data --make-pidfile
Bottle: Micro Web Framework + Development Blog
MrNiceTry
User
Beiträge: 80
Registriert: Samstag 7. November 2009, 10:32

Hallo Defnull.

So, alles gemacht.

todo.py läuft als Daemon unter Root und Port 80.

Problem: Es gibt keine Meldungen mehr von der Anwendung/Bottle.

Nicht beim Start, bestimmt auch nicht, falls Bottle mit einem Fehler aussteigt (oder die Anwendung).
Wie denkst Du darüber?
Gibt es eine Möglichkeit die Meldungen anders auszugeben.


MrNiceTry
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ich hoffe die Server sind nicht am Internet, denn ein Deamon auf Port 80 und dann mit root-Rechten? Ohje. Nicht umsonst droppen alle nennenswerten httpds ihre Berechtigungen auf www-data oder nobody…
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Wie wäre es denn mit lighttpd statt einem Apache?
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Benutzeravatar
noisefloor
User
Beiträge: 4327
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Problem: Es gibt keine Meldungen mehr von der Anwendung/Bottle.
Nee, wohin auch? Läuft doch im Hintergrund als Daemon. Um's logging musst du dich in so fällen selber kümmern. Lässt sich ja auch mit Bordmitteln von Python realisieren...
todo.py läuft als Daemon unter Root und Port 80.
Hm... Grund: siehe Leonidas Post.

Gruß, noisefloor
Benutzeravatar
noisefloor
User
Beiträge: 4327
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Wie wäre es denn mit lighttpd statt einem Apache?
Oder wie wäre es mit Boa? Der ist so klein, dass er selbst auf dem schmalbrüstigsten System läuft. Ist bei Ubuntu auch in den Quellen.

Gruß, noisefloor
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Wie groß issen der Apache eigentlich?
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
lunar

jbs hat geschrieben:Wie groß issen der Apache eigentlich?
Im Durchschnitt wohl so um die 1,80 m.

SCNR
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

jbs hat geschrieben:Wie groß issen der Apache eigentlich?
72cm
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Ich präzisiere: Wie viel Speicherplatz verbrauchen die Dateien des Apache Webservers und welche Ressourcen beansprucht dieser?
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Also ich hab so im Kopf ~80 Megabytes Memory wenn er nur rumidled, ohne irgendwelches Tuning und so Kram.
Benutzeravatar
noisefloor
User
Beiträge: 4327
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

> Wie groß issen der Apache eigentlich?
Meinst du installiert oder was den Speicherverbrauch angeht?

Auf meinem virtuellen Server mit _wenig_ Traffic belegt der Apache bzw. dessen Kinderprozesse ca. 20-25% RAM (von 512 MB).

Gruß, noisefloor
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ansonsten gibt es auch andere Server wie nginx oder Cherokee, aber ich muss sagen dass es, zumindest für mich nicht lohnt sich mit deren Setup zu beschäftigen. Das ist mir inzwischen zu nervig geworden, aber wenn man das mal ausprobieren will...
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
MrNiceTry
User
Beiträge: 80
Registriert: Samstag 7. November 2009, 10:32

Hallo.

Hab mich jetzt entschlossen mir lighttpd mal näher anzusehen.
Hab's installiert und probiere rum.

Kann mir jemand einen Tip geben, wie ich Bottle, bzw. die Anwendung einbinde ???


Danke
Antworten