Machbarkeitsanfrage Python oder andere Sprache

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Yogi
User
Beiträge: 80
Registriert: Montag 21. Januar 2008, 16:35
Wohnort: Bonner

Beitragvon Yogi » Montag 24. März 2008, 15:32

@Leonidas:

Jo, aber dann darfst du auch keine besondere Performance erwarten.

Wie meinst du das?

Postgres

Ok, werde ich checken.

Bei CherryP habe ich aber den Anfangsvorteil eines schell aufgesetzten Servers und dass ich von da aus immer noch Apache mit ins Boot nehmen kann.

Aber vielleicht nimm ich erst einmal ein WAMP für den Anfang und taste mich langsam vor....?

Würde wohl zu SQLAlchemy raten.

Dann ziehe ich mir mal die Doku rein, wenn ich keine Zugang dazu finde, teste ich mal Storm.


Ich sehe allerdings dein Problem mit Genshi nicht, an welche Stelle stört dich XML

Ich denke, dass es in meinem Fall besser ist Python Code direkt eingebaut zu haben, da ich so eher so eine Art Browsergame realisieren kann, aber vielleicht irre ich mich da auch.


asynchat/asyncore, Medusa, Allegra, Kamaelia.

Checke ich mal durch, gibts da eine besondere Empfehlung?

@BlackJack:
Gerade der Anfang ist ja das schwerste. Ich kann mich vor lauter Angeboten nicht entscheiden und natürlich möchte ich nicht komplett meine Entscheidungen mitten während der Testphase revidieren müssen.
Wenn erst einmal mehrere Leute das System nutzen und ich muss dann alles neu machen bzw. eine längere Auszeit einläuten ist das nicht so optimal.

Ich möchte, glaube ich vor allem keine Sackgassen-Lösung, wenn das überhaupt machbar ist....??
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: Bin zurück und der Prototyp läuft

Beitragvon gerold » Montag 24. März 2008, 16:42

Hallo Yogi!

Leonidas hat geschrieben:
Yogi hat geschrieben:Am liebste würde ich gerne während der anfänglichen Entwicklung unter Windows bleiben, sofern das möglich ist.

Jo, aber dann darfst du auch keine besondere Performance erwarten.

Du wirst während der Entwicklung keinen Unterschied merken.

Leonidas hat geschrieben:
Yogi hat geschrieben:Als Datenbank MySQL.

Leonidas hat geschrieben:Postgres.

Postgres!

Leonidas hat geschrieben:
Yogi hat geschrieben:Als Server dachte ich an CherryPy

Und allen bereichten nach skaliert es nicht. Nimm etwas anderes.

CherryPy ist sauschnell, nimmt dir viel Arbeit ab und in Verbindung mit dem Apachen ein absoluter Sprinter. Du wirst nichts besseres finden was so einfach zu verwenden ist.

Yogi hat geschrieben:ORM für die Datenbank

ORMs sind eine zusätzliche Schicht zwischen der Datenbank und deinem Programm. Das ist für einfache Programme vielleicht ein Vorteil für Leute, die mit SQL nichts anfangen können.
Das kostet aber auch Rechenleistung und erschwert dir, die volle Performance aus dem Datenbankmanagementsystem raus zu kitzeln. Bei deiner Anwendung empfehle ich dir recht viel (Prozeduren, Trigger, Funktionen,...) direkt auf dem Datenbankserver PostgreSQL zu erledigen.

Yogi hat geschrieben:Die Daten von Server2 nach Server1 und dann zum Client dürfte wohl zu lange dauern, oder?

Daten übertragen dauert immer seine Zeit. Aber auch das Raussuchen der Daten aus der Datenbank. Noch dazu greift der Computer dafür auf die Festplatten zu. Und Prozessorleistung wird auch verbraten. All das kannst du damit auslagern und die Rechenzeit in der Zwischenzeit für andere Anfragen verwenden. Und sobald die Daten vom Datenbankserver angekommen sind, schickst du sie zum Client.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Montag 24. März 2008, 16:51

Hallo Yogi!

Yogi hat geschrieben:Ich denke, dass es in meinem Fall besser ist Python Code direkt eingebaut zu haben, da ich so eher so eine Art Browsergame realisieren kann
[...]
Ich möchte, glaube ich vor allem keine Sackgassen-Lösung

Und genau damit würdest du in eine Sackgasse fahren.

Trenne die Darstellung vom Programm!!!

Nimm auf jeden Fall eine Vorlagensprache. Welche, ist ziemlich egal. Hauptsache ist, dass du so gut wie keine Logik in die Darstellung verlagerst. So etwas **galt** vor einigen Jahren mit "Active Server Pages" noch als schick. Inzwischen hat man größtenteils eingesehen (sogar PHP-Entwickler haben sich weiterentwickelt), dass sich solche Programme sehr schwer erweitern/verbessern lassen. Von meinen ASP-Programmen existiert kein einziges mehr.


gerold hat geschrieben:Bei deiner Anwendung empfehle ich dir recht viel (Prozeduren, Trigger, Funktionen,...) direkt auf dem Datenbankserver PostgreSQL zu erledigen.

Ich verwende unter Windows den SQL-Manager um PostgreSQL-Datenbanken zu entwickeln.

http://sqlmanager.net/products/postgresql/manager/

Die kostenlose LITE-Version kann zwar nicht so viel wie die Vollversion -- aber immer noch besser als nur mit PgAdmin arbeiten zu müssen.

mfg
Gerold
:-)
Zuletzt geändert von gerold am Montag 24. März 2008, 17:02, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs

Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Beitragvon Y0Gi » Montag 24. März 2008, 17:51

Yogi hat geschrieben:Bei CherryP habe ich aber den Anfangsvorteil eines schell aufgesetzten Servers und dass ich von da aus immer noch Apache mit ins Boot nehmen kann.

Ein Apache/Lighty/nginx/* wird ohnehin nur interessant, um der Python-Applikation selbst das Ausliefern von statischen Daten (Bilder, Videos usw.) abzunehmen, da Erstere darin entsprechend schnell sind.

Yogi hat geschrieben:Aber vielleicht nimm ich erst einmal ein WAMP für den Anfang und taste mich langsam vor....?

Ein einfacher Python-HTTP-Server (wsgilib, Paste, CherryPy, ...) reicht für den Anfang und läuft auf den gängigen Betriebssystemen. Später kannst du da nach Belieben etwas vorschalten und, im Falle einer WSGI-Anwendung, den Unterbau austauschen.

Würde wohl zu SQLAlchemy raten.

Ich dir auch. Rein mit SQL gegen ein spezielles DBMS zu programmieren, wäre mir sowohl zu umständlich als auch zu unflexibel. Optimieren kann man dann immer noch, und bzgl. der Erzeugung von angepassten Queries ist man mit SA auch sehr flexibel.

Yogi hat geschrieben:
Ich sehe allerdings dein Problem mit Genshi nicht, an welche Stelle stört dich XML

Ich denke, dass es in meinem Fall besser ist Python Code direkt eingebaut zu haben, da ich so eher so eine Art Browsergame realisieren kann, aber vielleicht irre ich mich da auch.

Mir scheint, du verwechselst da was. Template Engines sollen primär die Präsentation auslagern, Code hat da im reinsten Sinne nichts drin verloren. Und ja, gerade wenn du Websites erstellen willst (sowohl mit XHTML als auch mit XML-gefütterten Flash-Applets) bietet sich Genshi aufgrund der XML-Orientierung an. Mako ist dennoch keine schlechte Wahl. Musst du selbst rausfinden, was dir besser gefällt (und ggf. eben später wechseln, das ist ja keine Schande, im Gegenteil).
Yogi
User
Beiträge: 80
Registriert: Montag 21. Januar 2008, 16:35
Wohnort: Bonner

Beitragvon Yogi » Montag 24. März 2008, 19:49

Dann habe ich ja für den Anfang eine vernünftige Basis:

Windows (später Debian) mit CherrPy, PostgreSQL, SQLAlchemy und Mako bzw. Genshi (da werde ich erst einmal das nehmen, wo ich mich wohler fühle und mal sehen).

Einzig was den Ersatz für Twisted betrifft (ist das wirklich overkill und so komplex? ) bin ich mir noch nicht sicher. Kamaelia ist wies aussieht nur für Linux, Allegra blicke ich noch nicht durch, Medusa wurde schon seit 2003 nicht mehr angepackt, und zu asyncore habe ich zumindest ein nettes Tut gefunden (asyncore Tut). Aber wo finde ich was zu der Verwendung der Protokolle UDP und TCP? Ich konnte nicht erkennen, dass die direkt in diesen Paketen unterstützt werden.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 24. März 2008, 20:20

Yogi hat geschrieben:Windows (später Debian) mit CherrPy, PostgreSQL, SQLAlchemy und Mako bzw. Genshi (da werde ich erst einmal das nehmen, wo ich mich wohler fühle und mal sehen).

Vor allem bei Mako solltest du dabei achten - und das haben Gerold und Y0Gi schon gemeint - dass du dort so wenig Python-Code wie möglichst einbaust. Das ist auch so schon eine gute Idee, da Templates mit eingebettetem Python-Code in den meisten Editoren absolut ätzend zu bearbeiten ist.
Genshi hat den Nachteil das es langsamer ist und dass es (hauptsächlich) XML ist. Wobei letzteres je nach Anforderungen auch ein Vorteil sein kann. Ich nutze sowohl Genshi als auch andere, nicht-XML-basierte Templatesprachen und bin eigentlich mit beidem Recht zufrieden. Genshi ist besonders anfangs etwas ungewohnt.

Yogi hat geschrieben:Einzig was den Ersatz für Twisted betrifft (ist das wirklich overkill und so komplex? ) bin ich mir noch nicht sicher. Kamaelia ist wies aussieht nur für Linux, Allegra blicke ich noch nicht durch, Medusa wurde schon seit 2003 nicht mehr angepackt, und zu asyncore habe ich zumindest ein nettes Tut gefunden (asyncore Tut). Aber wo finde ich was zu der Verwendung der Protokolle UDP und TCP? Ich konnte nicht erkennen, dass die direkt in diesen Paketen unterstützt werden.

Twisted ist gar nicht so schwer finde ich. Erfordert nur anfangs etwas Einarbeitungszeit, aber das ist es wohl auch Wert. asnycore ist der Teil von Medusa der es in die Stdlib geschafft hat, also solltest du dort mal reingucken. Medusa ist dann "the real thing" und da es nur das Grundgerüst bietet ist es auch nicht mehr nötig dort Sachen zu ändern (aber ich gebe zu, es wird nur von wenigen verwendet, Teils auch weil asyncore schon reicht). Allegra ist eine Art aufgebohrtes Medusa, von einem der gemeint hat Twisted gehe den falschen Weg.

Und die Protokollunterstützung für TCP und UDP (aber noch nicht SCTP *g*) kommt aus dem `sockets` modul. Das ist eine Ebene tiefer und wird von Python bereitgestellt und von allen aufgeführten Modulen im Kern benutzt. Da brauchst du dich auch nicht drum kümmern.

Also wenn ich so etwas machen sollte, würde ich mal sehen was für Anforderungen da sind. Wenn es einfach nur funktionieren soll, dann asyncore. Wenn es hingegen viele Features haben soll und auf einer stabilen Basis stehen soll dann Twisted. Wenn ich neue Wege ausprobieren wollte dann würde ich Kamaelia nehmen (mir persönlich ist Windows-Unterstützung in dem Fall ziemlich egal und auch dann könnte man einen Client für Windows schreiben der asyncore oder Twisted nutzt, wenn die Leistung von kamaelia auf dem Server stimmt).

Wie BlackJack sagte: erwarte nicht dass es beim ersten mal hinhaut. Manchmal ist es nötig Komponenten neu zu schreiben, weil man das inzwischen besser versteht, es neue Möglichkeiten gibt, weil die Wege die man eingeschlagen hat für die Tonne sind oder weil der ursprüngliche Code nicht wartbar ist.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Yogi
User
Beiträge: 80
Registriert: Montag 21. Januar 2008, 16:35
Wohnort: Bonner

Beitragvon Yogi » Montag 24. März 2008, 21:04

Ok, ich glaube jetzt komme ich erst einmal weiter. Ich muss mir noch überlegen, ob ich mir direkt Twisted antue, oder erst einmal den sanfteren Weg gehe um etwas mehr Übung zu bekommen.

Ihr hab mir schon mal sehr geholfen. Ich halte euch auf den laufenden, auch wenn alles bei mir etwas länger dauert, da ich nur abends nach Kinderjob und total erschöpft arbeiten kann, aber wofür gibt es denn Urlaub ;)
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Beitragvon audax » Dienstag 25. März 2008, 04:37

Ich hab hier wirklich gute Erfahrungen mit Twisted gemacht, und zwar mit dem XMLRPC-Server aus twisted.web

Doku ist Ok, API ist gut und die Leute im IRC sind sehr hilfreich :]

Und vor allem ist es abartig flexibel! :D
Yogi
User
Beiträge: 80
Registriert: Montag 21. Januar 2008, 16:35
Wohnort: Bonner

Beitragvon Yogi » Dienstag 25. März 2008, 10:42

Round and round and round we go.... warum gibt es in Python immer so viele Möglichkeiten? Ich kann doch nicht erst einmal alles jahrelang durchtesten??
Aber gut, teste ich auch mal an ;) oder haben da schon andere Erfahrungswerte damit??
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Beitragvon audax » Dienstag 25. März 2008, 12:36

Och, hält sich doch in Grenzen...
Versuch dich mal an Perl. da hat man für jedes kleines Problem min. 10 Bibliotheken zur Auswahl /o\
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 25. März 2008, 13:23

audax hat geschrieben:Versuch dich mal an Perl. da hat man für jedes kleines Problem min. 10 Bibliotheken zur Auswahl /o\

Wie in TeX auch. Fürs andere extrem wäre OCaml zu empfehlen, dort gibt es für viele Aufgaben 0 Bibliotheken und wenn es welche gibt, dann sind die nicht besonders gut, oder seit Jahren tot.

Das ist eben viel öfter das Problem bei der Adaptation von Sprachen - mangelnde Basisbibliotheken. Diese zu schreiben ist auch in der Regel am undankbarsten.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Yogi
User
Beiträge: 80
Registriert: Montag 21. Januar 2008, 16:35
Wohnort: Bonner

Update!

Beitragvon Yogi » Samstag 19. April 2008, 22:05

Ich dachte, ich berichte mal kurz über meine weiteren Fortschritte bzw. was sich bis jetzt so getan hat.

Ich habe mir jetzt doch Debian Etch angetan. Mein alter Rechner hatte nach dem Urlaub scheinbar den Geist aufgegeben, was ich zum Anlass genommen habe nun endlich nur noch auf dem neuen zu arbeiten. Den alten habe ich dann wieder gefixt und geselintet. Als Vorbereitung auf einen spätern Ded-Server dachte ich mir, so kann ich besser im trockenen üben und mir ohne Scheu die Zähne ausbeissen ;)

Momentan habe ich also Debian drauf, dann VirtualBox mit Debian als Server drauf. Mit DynDns ist der Server jetzt von aussen erreichbar. Das mit der Bridge war schwerer als die one-click Lösung von VMware, aber multiple snapshots und shared folder aus der Box waren mir schon wichtig, ohne Neukompilierung und anderem gewusel. Habe da ein ganz tolles Buch, nennt sich Linux-Server mit Debian GNU/Linux. Das umfassende Handbuch und Praxisbuch für die Versionen Etch (Debian 4.0) und Sarge (Debian 3.1) von Eric Amberg und ist erste Sahne.

Leider habe ich die VM als admin installiert und bekomme sie als normaler user nicht ganz zum laufen, liegt an dem Netz, aber alle Freigaben die nötig sind (Gruppenzugehörigkeit etc) sind eigentlich getätigt??, muss noch was forschen... ach ja und dann dann Thema firewall, gaaaaanz wichtig.

Dann muss ich noch Python 2.5 drauf installieren ( konnte nicht herausfinden, ob bei Debian schon die 2.5.2 drin ist, da steht was von 2.5-5 als Paket zum installieren??), dann CherryPy samt Zusatzgepäck, Twisted und allerlei an Zusatzmodulen und dann kanns los gehen.

Echt easy ;) aber es geht voran....
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: Update!

Beitragvon Leonidas » Samstag 19. April 2008, 22:25

Yogi hat geschrieben:Dann muss ich noch Python 2.5 drauf installieren ( konnte nicht herausfinden, ob bei Debian schon die 2.5.2 drin ist, da steht was von 2.5-5 als Paket zum installieren??), dann CherryPy samt Zusatzgepäck, Twisted und allerlei an Zusatzmodulen und dann kanns los gehen.

Ja, Debian Etch bringt Python 2.5(.0) im Paket python2.5 mit. Wenn du was aktuelleres willst, dann müsstest du es backporten. Oder es gut sein lassen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Yogi
User
Beiträge: 80
Registriert: Montag 21. Januar 2008, 16:35
Wohnort: Bonner

Beitragvon Yogi » Samstag 19. April 2008, 22:40

Ja, Debian Etch bringt Python 2.5(.0) im Paket python2.5 mit. Wenn du was aktuelleres willst, dann müsstest du es backporten. Oder es gut sein lassen.

backporten? was heist das denn?? dachte entweder forwardporten ;) bzw. wie leider zu oft, neukompilieren...
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Samstag 19. April 2008, 22:43

Yogi hat geschrieben:backporten? was heist das denn??

Ein neueres Paket aus Lenny nach Etch zurückportieren. Also das aktuellere Debian-Paket für eine ältere Debian-Version neu bauen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice

Wer ist online?

Mitglieder in diesem Forum: thorius