Welches Framework ist das richtige für Mich?

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
amiganer68
User
Beiträge: 18
Registriert: Mittwoch 1. Juli 2009, 14:20

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
Benutzeravatar
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 ;)
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.
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:Django ist eine gute Idee, doch daran gefällt mir nicht das "Batteries Included"
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)

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
amiganer68
User
Beiträge: 18
Registriert: Mittwoch 1. Juli 2009, 14:20

Defnull hat geschrieben:Ich komme natürlich nicht durm rum, werbung für Bottle zu machen. Man möge es mir verzeihen ;)
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.
Bottel hat einen HTTP Server eingebaut und läuft auch ohne CherryPy, kann aber mit CherryPy zusammen arbeiten, wenn das gewünscht ist.
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.
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 ;)
Da sollte man ann auch TurboGears2 nicht vergessen, daß würde mir etwas besser gefallen. Die Template-Engine kann ja ohne Probleme ausgetauscht werden?!
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.
Version 2 ist mir bekannt, gibt es schon Version 3?

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
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

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.
Ja und Nein.

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)
Wenn du nun auf http://localhost/hello gehst, bekommst du ein "Hello World!" zu sehen.
Bottle: Micro Web Framework + Development Blog
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

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
Benutzeravatar
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
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Defnull 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.
Das ist seit declarative so gut wie unnötig imo
lunar

Elexir ist "weiter weg" von SQLAlchemy als declarative und daher durchaus nützlich.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

amiganer68 hat geschrieben:...CherryPy und Cheetah führt (http://halvar.at/python/cherrypy_cheetah/, DAS HAT MIR SEHR GEFALLEN).
Hallo Christian!

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.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Wenn der Spam Bot nicht gerade zugeschlagen hat, dann hilft die Seite [wiki]Web-Frameworks[/wiki] zur Entscheidungsfindung evtl. weiter ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten