Schreib doch deine Erfahrungen auf. Defnull wird sich bestimmt freuen und die Dokumentation erweitern. Ansonsten finde ich, dass der Quelltext von Bottle noch klein genug ist, dass man dort nachgucken kann, wenn etwas unklar ist. Mehr Tipps und Beispiele wären aber immer gut.
Stefan
Bottle: Micro Web Framework
So, da dass mit bottle und meinem Hoster leider nicht funktioniert, würde ich gerne zu r GoogleAppEngine umsteigen, ich möchte jetzt nur sichgehen dass bottle auf der GoogleAppEngine läuft, bevor ich mich anmelde
ich hoffe ihr könnts mir sagen
mfg
ich hoffe ihr könnts mir sagen

mfg
the more they change the more they stay the same
[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]
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
Defnull, ich wollte ein paar Änderungen pushen in meinem Bottle-Fork, aber das hat nicht geklappt, git mag mich nicht ("remote end hung up").
Hier der Diff, der den Fehler mit den Fehlern unter Fapws repariert.
http://paste.pocoo.org/show/142305/
Hier der Diff, der den Fehler mit den Fehlern unter Fapws repariert.
http://paste.pocoo.org/show/142305/
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
Github zieht gerade auf einen neuen server um und hat noch ein paar Probleme. Das sollte in ein paar Tagen wieder gehen.Dauerbaustelle hat geschrieben:Defnull, ich wollte ein paar Änderungen pushen in meinem Bottle-Fork, aber das hat nicht geklappt, git mag mich nicht ("remote end hung up").
Hier der Diff, der den Fehler mit den Fehlern unter Fapws repariert.
http://paste.pocoo.org/show/142305/
Danke für deinen Diff. Aber eigentlich sollte handler (is app is default_app is Bottle.__call__) IMMER eine Liste oder ein Iterable zurück liefern und niemals Strings (Zeile 274-276). Allerdings habe ich aufgrund deiner Beobachtung einen anderen Bug gefunden: Bei einer Exception wird die Fehler-Seite fälschlicher Weise als String zurück gegeben. Das hab ich korrigiert.
Kann es sein, das dein Fehler nur bei Exceptions auf tritt oder durch eine Middelware verursacht wird? Ansonsten kann ich mir nicht erklären, wie der Handler-Callable einen String zurück geben kann.
Sicherheitshalber baue ich deinen Patch trotzdem ein. Wär aber toll, wenn du das noch mal kontrollieren könntest.
Bottle: Micro Web Framework + Development Blog
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
Bottle kann AppEngine theoretisch. Ich selbst habe es noch nicht getestet. Allerdings gab es schon zwei Anfragen diesbezüglich und keiner hat sich im Nachhinein beschwert, also gehe ich davon aus, das es wie erwartet funktioniert.Dav1d hat geschrieben:So, da dass mit bottle und meinem Hoster leider nicht funktioniert, würde ich gerne zu r GoogleAppEngine umsteigen, ich möchte jetzt nur sichgehen dass bottle auf der GoogleAppEngine läuft, bevor ich mich anmelde
ich hoffe ihr könnts mir sagen![]()
Bottle: Micro Web Framework + Development Blog
danke, hätt ich selber draufkommen könnenjbs hat geschrieben:http://bottle.paws.de/page/docs#google-appengine
the more they change the more they stay the same
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
-Fehler irgendwie bei "send_file"- ist leider keine sehr präzise Fehlermeldung. Ich habe neben dem Reloader auch einen Patch für If-Modifies-Since Support in send_file ein gebaut. Da der Reloader sonst überhaupt nix mit send_file zu tun hat, denke ich, das der Fehler dort liegt. Allerdings kann ich ihn nicht reproduzieren. Der folgende Code funktioniert wie erwartet, selbst wenn ich ihn mit 400 Anfragen/Sekunde bombardiere.SchneiderWeisse hat geschrieben:@Defnull: und was ist mit meinem Bug? Ich weiß nicht, was du verändert hast, aber bei mir unter Mac geht der Reloader in Kombination mit send_file nicht mehr - es stürzt ab.
Code: Alles auswählen
import bottle
@bottle.route('/')
def index():
bottle.send_file('sendtest.py', './')
bottle.run(reloader=True)
Bottle: Micro Web Framework + Development Blog
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
Auf http://blog.curiasolutions.com/2009/09/ ... -shootout/ findet man eine nette Übersicht über verschiedene Web Development Plattformen inklusive Benchmarks. Bottle ist auch dabei und schneidet ziemlich gut ab
It made my day 

Ich freu mich immer noch wie ein Schneekönig über dieses positive FeedbackAs you can see, Bottle is very close to bare WSGI as far as speed goes. On a side note, adding a sample template using Bottle’s default templating package didn’t seem to change these numbers at all.
[...]
What was exciting to me about this test was that I found myself looking at a minimal Python framework equipped with a full templating system and ORM [SQLAlchemy] which all performed faster than the PHP+mysqli() test.


Bottle: Micro Web Framework + Development Blog
Ich find's ehrlich gesagt beeindruckend, wie schnell dein Projekt bekannt und beliebt geworden ist. Wenn man bedenkt, dass du ursprünglich nur ein bißchen was zum Thema Mikro-Frameworks beitragen wolltest. 

-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
Du könntest aber den Code mal aufräumen :P Die run-Funktion ist imho viel zu voll. Und zB. sehen deine Docstrings nicht immer gleich aus, ...
Hallo, ich fang grad damit an, webseiten mithilfe von Bottle zu schreiben (und bin begeistert wie schnell und einfach das ist =D), hab nur leider ein kleines Problem: Beim parsen folgendem skriptes erhalte ich einen typeError:
Der fehler:
Und nochmal dasselbe aus Apache's error.log:
Ich tipp hier einfach mal auf einen Fehler im skript. =/
Code: Alles auswählen
import sys
import os
import time
import bottle
from bottle import route, request, template
@route('/')
def index():
return template('index')
application = bottle.default_app()
Code: Alles auswählen
Unhandled Exception: TypeError('not all arguments converted during string formatting',)
Code: Alles auswählen
[Thu Oct 01 13:48:15 2009] [error] [client 127.0.0.1] Unhandled Exception: TypeError('not all arguments converted during string formatting',)
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
Ja Dauerbaustelle, zu viel Lob ist ungesund, ich weis
Ich bin ja schon ruhig
Momentan liegt meine Priorität bei den Reloader- und Mako-Bugs und mehr Test Cases. Bevor die Testabdeckung nicht besser wird, möchte ich auch ungern den Code säubern oder umstrukturieren, weil sich da immer gerne neue Bugs ein schleichen. Mit den Docstrins hast du allerdings recht.
Ich hab mir inzwischen auch einen persönlichen Release Cycle überlegt: Nach der Feature Runde von 0.6 kommt jetzt erst mal eine Bug Smashing Phase. Wenn Bottle 0.6 stabil läuft und genügend Tests da sind, wird fleißig auf geräumt und eventuell neue Features vorbereitet, die dann ins nächste Release kommen (0.7). Gleichzeitig kommt ein Update der Dokumentation. So zwinge ich mich selbst, neue Features erst ein zu bauen, wenn die Alten funktionieren und ausreichend getestet und dokumentiert sind.
Wer übrigens Code bei steuern will, hilft mir am meisten mit GitHub Forks, da ich diese sehr einfach einpflegen und beobachten kann. Patches per Mail sind aber auch OK. Bitte versteht aber, wenn ich neue Features erst einmal hinten an stelle, solange noch Bugs zu zermatschen sind. Test Cases für eure Patches sind übrigens sehr gerne gesehen

Momentan liegt meine Priorität bei den Reloader- und Mako-Bugs und mehr Test Cases. Bevor die Testabdeckung nicht besser wird, möchte ich auch ungern den Code säubern oder umstrukturieren, weil sich da immer gerne neue Bugs ein schleichen. Mit den Docstrins hast du allerdings recht.
Ich hab mir inzwischen auch einen persönlichen Release Cycle überlegt: Nach der Feature Runde von 0.6 kommt jetzt erst mal eine Bug Smashing Phase. Wenn Bottle 0.6 stabil läuft und genügend Tests da sind, wird fleißig auf geräumt und eventuell neue Features vorbereitet, die dann ins nächste Release kommen (0.7). Gleichzeitig kommt ein Update der Dokumentation. So zwinge ich mich selbst, neue Features erst ein zu bauen, wenn die Alten funktionieren und ausreichend getestet und dokumentiert sind.
Wer übrigens Code bei steuern will, hilft mir am meisten mit GitHub Forks, da ich diese sehr einfach einpflegen und beobachten kann. Patches per Mail sind aber auch OK. Bitte versteht aber, wenn ich neue Features erst einmal hinten an stelle, solange noch Bugs zu zermatschen sind. Test Cases für eure Patches sind übrigens sehr gerne gesehen

Bottle: Micro Web Framework + Development Blog
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
Jup, da war noch ein Bug in template(), der eine veraltete SimpleTemplate API verwendet hat. Ich sag ja, Bottle hat zu wenig UnitTests >.<
Mach in 10 Minuten mal ein "easy_install -U bottle"
Mach in 10 Minuten mal ein "easy_install -U bottle"
Bottle: Micro Web Framework + Development Blog
Update durchgeführt, aber leider derselbe fehler =/Defnull hat geschrieben:Jup, da war noch ein Bug in template(), der eine veraltete SimpleTemplate API verwendet hat. Ich sag ja, Bottle hat zu wenig UnitTests >.<
Mach in 10 Minuten mal ein "easy_install -U bottle"
OT: ich find in der gesamten Doku keine möglichkeit eigene HTTP-Header abzusenden, sprich, sowas wie "Location: http://foo.bar/baz.html?p=moo" - Ist das einfach nur gut versteckt, oder gibts das (noch) garnicht? ^^
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
Ich hätte Lust, nur: Was gibts zu tun? Für Testschreiben reicht meine Kenntnis nicht.
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
Versuch mal bitte bottle.debug(True) um komplette Stack Traces zu bekommen. Das grenzt den Fehler besser ein. Kann es sein, das in deinem Template ein Fehler ist? Kannst du mit dein Template mal schicken?stuhlbein hat geschrieben:Update durchgeführt, aber leider derselbe fehler =/
Stimmt, das ist noch undokumentiert. Aber es geht:stuhlbein hat geschrieben:Ich find in der gesamten Doku keine möglichkeit eigene HTTP-Header abzusenden, sprich, sowas wie "Location: http://foo.bar/baz.html?p=moo" - Ist das einfach nur gut versteckt, oder gibts das (noch) garnicht? ^^
Code: Alles auswählen
bottle.response.header['Location'] = "http://foo.bar/"
bottle.response.status = 307
# oder besser:
bottle.redirect("http://foo.bar/")
Bottle: Micro Web Framework + Development Blog
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
Du könntest dich zum Beispiel an den docstrings vergreifenDauerbaustelle hat geschrieben:Ich hätte Lust, nur: Was gibts zu tun? Für Testschreiben reicht meine Kenntnis nicht.

Jede Form von Feedback hilft

Bottle: Micro Web Framework + Development Blog
Mehr als Wiederholen kann ich mich nicht:
Werde mich aber heute Nachmittag direkt mit dem Problem auseinandersetzen und versuchen es zu beheben.
und mehr ist dazu auch nicht zu sagen, weil nicht mehr passiert. Irgendwo muss da ein Bug mit send_file sein, der vllt. gar nicht mit dem Reloader zusammenhängt, sondern mit deinem neuen Feature zusammenhängt, das du da eingebaut hast. Ich würde dir gerne eine Fehlermeldung liefern, aber Python stürzt lediglich ab.Bei mir zumindest stürzt Python ab (verwende einen Mac). Entsprechend des Fehlerberichts von Mac OS X und eigenen Tests liegt der Fehler irgendwie bei "send_file". Mein eigener Reloader - den ich hier gepostet habe - funktioniert hingegen perfekt.
Werde mich aber heute Nachmittag direkt mit dem Problem auseinandersetzen und versuchen es zu beheben.