Hallo!
Ich habe schon ein Projekt entwickelt (Grob gesagt: Event-Kalender für meine Firma, Vertrieb eines Zeitungsverlages, Träger-Ausfälle und -Urlaube), dafür habe ich MediaWiki und Semantic MediaWiki benutzt, da man dort recht gut mit den Links die ganzen Verknüpfungen herstellen kann und Suchen und ....
Dabei bin ich an die Grenzen meines Hosters gestoßen (nur 15sec CPU Time pro Prozess). Auf der Suche bin ich dann auf Python gestoßen (die Sprache hattes mir früher schon mal angetan)...
Hier sehe ich meine Möglichkeit, direkt in den Code zur Erzeugung des Kalenders ein zu griefen, so Zeit zu sparen und noch weitere Teile zu verwirklichen, die so in MediaWiki nur mit Klimzügen zu bewerkstelligen sind.
Das zur Vorgeschichte.....
Jetzt habe ich die Frage aller Fragen: Welches Framework ist das richtige für mich?
Es sollte eine Möglichkeit haben, über CherryPy zu laufen, so daß ich es als "StandAlone" Anwendung zB von einem USB-Stick betreiben kann. Wenn es dann mal gehosted wird, einfach installieren fertig.
Django ist eine gute Idee, doch daran gefällt mir nicht das "Batteries Included", denn das spätere Zielsystem ist unbekannt und SQLAlchemy scheint mir hier flexiebler zu sein, aber auch etwas komplexer (Gibt es eine echte Deutsche Anleitung dafür?), was mir aber alle Möglichkeiten für Erweiterungen bietet wie Bezirks-Verwaltung etc.
Als Template Engine würde ich gerne Cheetah verwenden, denn durch das Vorcompilieren geht das bestimmt sehr fix beim einbinden von statten, und ich habe es mir angesehen und es gefällt mir (es gibt da einen Link hier im Forum, der zu einem Beispiel CherryPy und Cheetah führt (http://halvar.at/python/cherrypy_cheetah/, DAS HAT MIR SEHR GEFALLEN).
Damit wären wir bei den Wunschkomponenten: CherryPY als Web-Server, SQLAlchemy als Datenbank-Anbindung und Cheetah als Template-Engine. Gibt es das schon? Wenn ja, wo?
Christian
Welches Framework ist das richtige für Mich?
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
Ich komme natürlich nicht durm rum, werbung für Bottle zu machen. Man möge es mir verzeihen
Außerdem ist Bottle in einer einzigen Datei verpackt und hat keine zwingenden Abhängigkeiten zu anderen Packeten. Ideal für den USB-Stick
Wenn dir Bottle nicht gefällt, kann ich dir aber noch Pylons empfehlen. Das wird zwar mit paste (server) und mako (templates) ausgeliefert, aber beides ist eh besser als CherryPy und cheetah
Besonders von CherryPy möchte ich dir ab raten. Es ist lahm, kompliziert und schlecht dokumentiert. Selbst das TurboGears Team hat das eingesehen und setzt mit Version 3 auf Paste als HTTP Server.
Bottel hat einen HTTP Server eingebaut und läuft auch ohne CherryPy, kann aber mit CherryPy zusammen arbeiten, wenn das gewünscht ist.amiganer68 hat geschrieben:Es sollte eine Möglichkeit haben, über CherryPy zu laufen, so daß ich es als "StandAlone" Anwendung zB von einem USB-Stick betreiben kann. Wenn es dann mal gehosted wird, einfach installieren fertig.
Bottle ist absolut offen für third-party Komponenten. Selbst die eingebaute Template-Engine kann man gegen eine beliebige aus tauschen. Bottel hat sogar praktische Adapter für andere Engines (momentan nur mako)amiganer68 hat geschrieben:Django ist eine gute Idee, doch daran gefällt mir nicht das "Batteries Included"
Außerdem ist Bottle in einer einzigen Datei verpackt und hat keine zwingenden Abhängigkeiten zu anderen Packeten. Ideal für den USB-Stick
Wenn dir Bottle nicht gefällt, kann ich dir aber noch Pylons empfehlen. Das wird zwar mit paste (server) und mako (templates) ausgeliefert, aber beides ist eh besser als CherryPy und cheetah
Besonders von CherryPy möchte ich dir ab raten. Es ist lahm, kompliziert und schlecht dokumentiert. Selbst das TurboGears Team hat das eingesehen und setzt mit Version 3 auf Paste als HTTP Server.
Bottle: Micro Web Framework + Development Blog
-
- User
- Beiträge: 18
- Registriert: Mittwoch 1. Juli 2009, 14:20
Ich verzeihe es Dir, im Gegenteil: Es war für mich der Anlaß, als ich im Forum darauf gestoßen bin, diese Frage hier zu stellen.Defnull hat geschrieben:Ich komme natürlich nicht durm rum, werbung für Bottle zu machen. Man möge es mir verzeihen
Ist denn der HTTP-Server ein Ersatz für sowas wie Apache? Könnte ich zB den Stick in einen Rechner stecken, den Server laufen lassen und im Netzwerk könnten mehrere Personen gleichzeitig darauf zugreifen?Bottel hat einen HTTP Server eingebaut und läuft auch ohne CherryPy, kann aber mit CherryPy zusammen arbeiten, wenn das gewünscht ist.
CherryPy soll es ja sein (bin halt zuerst darauf gestoßen), durch den Artikel den ich erwähnte.
Da sollte man ann auch TurboGears2 nicht vergessen, daß würde mir etwas besser gefallen. Die Template-Engine kann ja ohne Probleme ausgetauscht werden?!Wenn dir Bottle nicht gefällt, kann ich dir aber noch Pylons empfehlen. Das wird zwar mit paste (server) und mako (templates) ausgeliefert, aber beides ist eh besser als CherryPy und cheetah
Version 2 ist mir bekannt, gibt es schon Version 3?Besonders von CherryPy möchte ich dir ab raten. Es ist lahm, kompliziert und schlecht dokumentiert. Selbst das TurboGears Team hat das eingesehen und setzt mit Version 3 auf Paste als HTTP Server.
Ist den Paste ein Apache Ersatz?
Warum alles "From a Stick"? Es soll möglich sein, das Projekt vorzustellen, ohne einen REchner groß mnipulieren zu müssen. Dann kann es im einfachsten al auch auf einem schnellen Stick installiert werden, kommt in den Server Rechner rein, der einfach nur noch den HTTP-Server hoch fährt und fertig.
Außerdem kann ich dann Projekt ohne Probs zw. meinen Desktop und meinem Laptop hin und her transportieren, immer aktuell....
Christian
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
Ja und Nein.amiganer68 hat geschrieben: Ist denn der HTTP-Server ein Ersatz für sowas wie Apache? Könnte ich zB den Stick in einen Rechner stecken, den Server laufen lassen und im Netzwerk könnten mehrere Personen gleichzeitig darauf zugreifen?
CherryPy soll es ja sein (bin halt zuerst darauf gestoßen), durch den Artikel den ich erwähnte.
Bottle ist kein HTTP-Server, sondern ein WSGI Framework. Bottle kann aber HTTP-Server mit WSGI-Schnittstelle ansprechen, um seinen Content über HTTP erreichbar zu machen. Wenn man keinen eigenen HTTP Server installieren will, nutzt Bottle den in Python eingebauten wsgi.simple_server. Der reicht für kleine Seiten vollkommen aus, ist für höher frequentierte Seiten aber etwas zu langsam (da single-threaded). Bottle kann aber auch CherryPy, Paste, Twisted, flup und noch ein paar andere als HTTP-Server benutzen. Die tun alle das gleiche: Nach außen sind sie ein waschechter HTTP-sServer (wie Apache) und nach innen ein WSGI-Gateway, mit dem Bottle sprechen kann.
Also kann ich deine Frage im Endeffekt mit Ja beantworten: Bottle kann (auch ohne Apache) seine Dienste auf Port 80 zur Verfügung stellen. Beispiel:
Code: Alles auswählen
from bottle import route, run
@route('/hello')
def hello_world():
return 'Hello World!'
run(host='localhost', port=80)
Bottle: Micro Web Framework + Development Blog
amiganer68, wenn dir CherryPy, Cheetah und SQLalchemy gefallen, dann nimm die drei doch einfach. Was fehlt dir denn noch, das du nach einem Rahmenwerk fragst, gleichzeitig aber keine Komplettlösung wie Django haben möchtest? Django könnte man auch mit CherryPy laufen lassen und Djangos ORM ist IMHO besser als sein Ruf. In den meisten Fällen braucht man die Flexibilität von SQLalchemy gar nicht und bekommt bei Django stattdessen ein nettes Admin-UI.
Stefan
Stefan
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
Als Alternative zu SQLAlchemy sei auch Elixir genannt, ein Aufsatz auf SQLAlchemy das einige der scharfen Kanten von SQLAlchemy aus glättet und deutlich einfacher zu bedienen ist.
Bottle: Micro Web Framework + Development Blog
Das ist seit declarative so gut wie unnötig imoDefnull hat geschrieben:Als Alternative zu SQLAlchemy sei auch Elixir genannt, ein Aufsatz auf SQLAlchemy das einige der scharfen Kanten von SQLAlchemy aus glättet und deutlich einfacher zu bedienen ist.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Christian!amiganer68 hat geschrieben:...CherryPy und Cheetah führt (http://halvar.at/python/cherrypy_cheetah/, DAS HAT MIR SEHR GEFALLEN).
Danke!
Derzeit entwickle ich in meinem Job, mit Hilfe von CherryPy und Cheetah, einen Webshop für Skischulen und Skiverleiher. Deshalb habe ich die Entwicklung dieser Tools etwas verfolgt.
CherryPy hatte vor Kurzem noch Probleme mit Python 2.6, die in der aktuellen Version vollständig behoben wurden.
Cheetah wurde kurzfristig geforkt. Nachdem sich der Entwickler von Cheetah wieder zurück gemeldet hatte, wurden die Änderungen des Forks wieder in das ursprüngliche Cheetah eingearbeitet. Jetzt arbeiten beide Programmierer eng zusammen -- sehr schöne Entwicklung. Weiters wird derzeit daran gearbeitet, den Namemapper (in C geschrieben) auch für Python 2.6 unter Windows wieder zum Laufen zu bekommen. Cheetah dürfte mit der nächsten Version (die in den nächsten Tagen/Wochen erwartet wird) wieder die volle Geschwindigkeit unter Windows erreichen.
Es macht richtig Spaß, mit Tools zu arbeiten, die einen nicht so einzwängen wie es bei manchen Frameworks so der Fall ist. Beide Tools werden aktiv weiterentwickelt und bewegen sich unaufhörlich in Richtung Python 3. Das gibt mir das Gefühl, nicht auf die falschen Pferde gesetzt zu haben.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.