Zope als Browsergamebasis

Django, Flask, Bottle, WSGI, CGI…
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Phlegma hat geschrieben:weil ich eben einen Eintrag zu Applicationservern in einem Browsergamesforum gelesen habe. Dort wird C# und Java angepriesen, aber mit Zope gibt es ja auch einen in Python. Wie gut eignet dieser sich für
1. Ajaxtortur von vielen kleinen Anfragen
2. einen Daemon, der ständig eine Datenbank nach eintretenden Events fragt?
Hallo Phlegma!

Zope ist ein großer Applikationsserver -- basierend auf einer Objektdatenbank. Zope kann viel, aber genau so wie Pylons oder Django, würde ich Zope **nicht** für so etwas verwenden. Zope kümmert sich **automatisch** um Dinge wie Authentifizierung und Zugriffsbeschränkungen -- und noch einige Dinge mehr. Das ist für manche Projekte ein Vorteil. Aber für so etwas was du vor hast, ist das ein Nachteil, weil Ressourcen verbraten werden, die du anderweiteig besser einsetzen kannst.

Wie ich dieses Projekt angehen würde? Ganz klar, mit Cheetah, CherryPy, mod_wsgi und dem Apachen. Im Hintergrund werden die Daten von PostgreSQL verwaltet.
Cheetah -- ganz einfach, weil ich mich daran gewöhnt habe und ich es für eine hervorragende pythonnahe Vorlagensprache halte.
CherryPy ist ein kleiner Applikationsserver, der mir genau die Arbeit abnimmt die sowiso erledigt werden muss -- und nicht mehr. CherryPy kann auch direkt XMLRPC anbieten (http://paste.pocoo.org/show/106541/). Auch JsonRPC ist kein Problem für CherryPy. Sessionverwaltung und Authentifizierung kann dazugeschaltet werden. Die Authentifizierung könnte aber auch der Apache erledigen.
mod_wsgi dient als schnelle Schnittstelle zum Apachen
Und der Apache liefert alles aus. Der Apache kann statischen Content (z.B. Bilder) sehr schnell ausliefern. Deshalb übernimmt dieser die Auslieferung dieser Dateien direkt -- ohne den Umweg über mod_wsgi und CherryPy machen zu müssen.
Der Apache kann auch so eingestellt werden, dass dieser Daten cached. Wenn man das richtig ausnutzt, dann reduzieren sich die Anfragen an CherryPy.
PostgreSQL arbeitet im Hintergrund und verwaltet die Daten. CherryPy öffnet mehrere Threads, die gleichzeitig auf die Datenbank zugreifen und PostgreSQL kann damit sehr gut umgehen.

Was will ich damit sagen? Nimm (in deinem Fall) kleine Tools und setze diese zu einer großen Anwendung zusammen. Lasse dir nicht von irgendeinem großen Framework oder Applikationsserver die Aufgaben und Werkzeuge diktieren.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Phlegma hat geschrieben:sma, sorry, bin jetzt nicht weiter auf dich eingegangen, weil ich das Gefühl hatte, dass wir fertig waren und sowieso etwas aneinander vorbei reden, weil wir versch. Ideen von Browsergames haben.
Macht nix.
Phlegma hat geschrieben:Ich komm hier nochmal zum Anfangspost zurück, weil ich eben einen Eintrag zu Applicationservern in einem Browsergamesforum gelesen habe. Dort wird C# und Java angepriesen, aber mit Zope gibt es ja auch einen in Python.
Wäre dies nicht das Python-Forum, würde ich in diesem Fall auch zu Java (oder Scala oder eine andere JVM-basierte Sprache) empfehlen :) Wie ich schon die ganze Zeit versuche zu sagen, ermöglicht ein fortlaufend Anwendungsserver ein ganz anderes Vorgehen als die Script+Datenbank-Share-Nothing-Architektur von PHP oder Python.

Do wolltest doch aber möglichst viel aus einem simplen shared-hosting-Service herausholen und da ist ein Application-Server keine Option.
Phlegma hat geschrieben:Wie gut eignet dieser sich für
1. Ajaxtortur von vielen kleinen Anfragen
2. einen Daemon, der ständig eine Datenbank nach eintretenden Events fragt
Zu Zope konkret kann ich leider nichts sagen, aber in Java wäre 1. kein prinzipielles Problem, allerdings kommt dies zu dem Preis von viel Speicher und viel CPU-Bedarf. Bei 2. würde man anders Vorgehen und ein Messaging-System (z.B. JMS, aber das ist eigentlich zu viel, Hazelcast sieht ganz nett aus) benutzen und die Datenbank nicht für Events benutzen.

Bei Python und Ajax fällt mir noch Orbited ein. Ich meine aber, die/der Entwickler hat sich inzwischen mehr in Richtung XMPP und WebSockets orientiert und bietet jetzt auch etwas Java-basiertes an...

Stefan
Antworten