Python skript auf Server laufen lassen?

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
The Spirit
User
Beiträge: 276
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

HI.
Weis nicht ob das hier der richtige Bereich ist, hoffe es passt. Nun zu meinem Problem.
Ich verwende eine Script um logdateien mit mehreren Millionen zeilen auszuwerten.
Dieses Script wird auch von meinen Kollegen benutzt.
Dazu liegt das Script bei jedem lokal auf dem Rechner. Das Script selbst holt sich die daten von einem Serverlaufwerk und legt die ergebnisse auch dort wieder ab.
Jetzt ist es aber nervig bei jedem Programmupdate alle Rechner mit der neuesten Version zu versorgen.
Jetzt könnte ich natürlich das Programm auf das Serverlaufwerk legen und dort von jedem Kollegen starten lassen, aber eigentlich wäre es mir am liebsten, wenn ich mit Firefox oder dergleichen eine Adresse eingebe (interne IP des Serverlaufwerks) und dann das Script (inkl. graphischer Oberfläche, welche aktuell TK ist) gestartet wird.
Was sollte ich mir hierzu am besten als einstieg durchlesen oder würdet ihr das ganze anders lösen?
Danke
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Also ich glaube mal kaum, dass man im Browser eine TK-Oberfläche laufen lassen kann!

Die Frage ist doch zunächst, was die Nutzer davon erwarten? Sie wollen doch eigentlich nur an das Ergebnis einer Auswertung gelangen, richtitg?

Wenn ja, dann musst Du das Script doch nur von "außen" (also von den Clients aus) aufrufbar machen. Das kannst Du relativ einfach als Webanwendung über einen Webserver realisieren. Man startet das Script eben per URL und erhält als Ergebnis den Link zur Auswertungsdatei.

Wenn Du da viele Einstellungen vornehmen musst, kann man sich natürlich streiten, ob diese elendige HTML-Form-Validierung wirklich Spaß macht (auch wenn es dazu Möglichkeiten gibt).

Alternativ schreibst Du eben einen nativen Client per TK und kontaktest Dein Server-Script per xmlrpc.
The Spirit
User
Beiträge: 276
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

Hyperion hat geschrieben:Wenn ja, dann musst Du das Script doch nur von "außen" (also von den Clients aus) aufrufbar machen. Das kannst Du relativ einfach als Webanwendung über einen Webserver realisieren. Man startet das Script eben per URL und erhält als Ergebnis den Link zur Auswertungsdatei.
hi.
das hier hört sich sehr gut an.
hast du ein paar links für mich, wie das mit der webanwendung auf webserver zu realisieren ist?
Thx
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Als Startpunkt würde ich Dir das wiki empfehlen:
[wiki]WSGI[/wiki]?highlight=(wsgi)

Dort gibt es dann noch mehr "Material" zu einzelnen Aspekten, wie z.B.d em Deployment.

Ansonsten gibts hier im Forum zig Sachen dazu.

Du musst Dir halt über die Komplexität klar werden. Ist es wirkich nur ein simples Aufrufen, oder kommen dazu noch zig Sachen drum herum. Das bringt Dich dann zur Frage, ob Du ein komplettes Framework wie Django benutzen solltest / möchtest, oder Dir ein schlankes Framework wie werkzeug reicht.[/url]
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ich würde ja nichts als Mittelweg bezeichnen, was als Dependency Paste.* mitzieht :P
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
lunar

Leonidas hat geschrieben:Ich würde ja nichts als Mittelweg bezeichnen, was als Dependency Paste.* mitzieht :P
Uh?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Zieht Pylons denn inzwischen kein Paste in easy_install mit? Und für mich ist Paste eben nicht ein Mittelweg zwischen Werkzeug und Django sondern in der gleichen Liga wie Django.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
lunar

Leonidas hat geschrieben:Zieht Pylons denn inzwischen kein Paste in easy_install mit? Und für mich ist Paste eben nicht ein Mittelweg zwischen Werkzeug und Django sondern in der gleichen Liga wie Django.
Ach so meinst du das. Aber das muss ich jetzt nicht verstehen, oder?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

The Spirit hat geschrieben:Jetzt könnte ich natürlich das Programm auf das Serverlaufwerk legen und dort von jedem Kollegen starten lassen
Hallo Spirit!

Und warum genau möchtest du das nicht? Das ist doch die einfachste Art ein Skript zu verteilen. Und ist in wenigen Minuten eingerichtet.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

lunar hat geschrieben:Aber das muss ich jetzt nicht verstehen, oder?
Das steht dir frei, ja. :) Scheint ein klassischer Fall von YMMV zu sein.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
The Spirit
User
Beiträge: 276
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

gerold hat geschrieben:
The Spirit hat geschrieben:Jetzt könnte ich natürlich das Programm auf das Serverlaufwerk legen und dort von jedem Kollegen starten lassen
Hallo Spirit!

Und warum genau möchtest du das nicht? Das ist doch die einfachste Art ein Skript zu verteilen. Und ist in wenigen Minuten eingerichtet.

mfg
Gerold
:-)
hi. natürlich wollte ich gleich noch etwas neues lernen.
aber aus zeitgründen fällt dies jetzt flach.
jetzt hab ich einfach mal die ganzen skripte auf den server gelegt, jedoch muss jetzt auf jedem pc der kollegen trotzdem noch python und die ganzen packages installieren.
wie kann ich das umgehen, sodass zwar auf dem desktop jedes kollegen eine verknüpfung zum main script auf dem server liegt, das script selbst aber mit python vom server aus läuft.
hoffe das ist nicht zu kompliziert erklärt.
thx
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Wenn du von "python installieren" sprichst, handelt es sich wahrscheinlich um Windows-Rechner, oder? Ist da schon ein ssh mit X-forwarding eingerichtet? Ist der Server ein Linux? Wenn ja, koenntest du auf dem Server in der .profile dein Programm starten, dann muessten die Anwender nur noch den ssh-client oeffnen. Mit einem Windows-Server koennte man vlt. etwas aehnliches hinbekommen?
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
The Spirit
User
Beiträge: 276
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

die lokalen rechner sind windows kisten.
der server ist ganz neu (läuft seit dieser woche erst) ist aber nachdem was ich bisher weis ne linux kiste.
hast du da genauere infos, wie ich das machen muss?
links, ...
thx
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

The Spirit hat geschrieben:jedoch muss jetzt auf jedem pc der kollegen trotzdem noch python und die ganzen packages installieren.
wie kann ich das umgehen, sodass zwar auf dem desktop jedes kollegen eine verknüpfung zum main script auf dem server liegt
Hallo Spirit!

Ich persönlich, bevorzuge es, den Kunden/Mitarbeitern Python zu installieren. Wenn du dir mehr Arbeit antun möchtest, dann kannst du dein Programm mit cx_freeze packen. Damit bekommst du eine ausführbare EXE, die du auf dem Netzlaufwerk verteilen kannst. Die Verknüpfung auf dem Desktop und/oder im Startmenü kannst du mit einem kleinen Setupprogramm erledigen. Es steht ja nicht geschrieben, dass ein Setupprogramm auch Dateien verteilen muss.

Siehe: http://www.python-forum.de/topic-5726.html

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
The Spirit
User
Beiträge: 276
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

danke gerold. das mit dem packen hört sich gut an.
installieren auf dem kollegen rechnern wollte ich vermeiden, da gerade R und Rpy nicht so schön sind. da sind viele abhängigkeiten.
jedoch passt das mit der exe ja auch nicht ganz, oder? ist ja ein linuxserver.
thx

edit:
grad mal laufen lassen, jedoch bekomm ich es nicht hin, das er mein rpy mit einbindet, obwohl ich in der main.py extra den import mit reingeschrieben hab.
er macht dann zwar ne exe drauf, aber die läuft kurz an und killt sich dann wieder selbst.
jemand ne idee?
nehm ich den import raus, läuft es, aber die klassen von rpy lassen sich dann nicht verwenden. argh
thx
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hallo Spirit!
The Spirit hat geschrieben:da gerade R und Rpy nicht so schön sind. da sind viele abhängigkeiten.
Das ist aber ein Problem. Wie soll cx_freeze herausfinden, welche Abhängigkeiten R hat? Das kann es nicht. Du musst wissen was für Abhängigkeiten benötigt werden und diese Dateien musst du händisch mit dazu packen.
The Spirit hat geschrieben:jedoch passt das mit der exe ja auch nicht ganz, oder? ist ja ein linuxserver.
Der Linux-Server ist nur der Lieferant für die Daten/Dateien. Ausgeführt wird die EXE dann auf dem Windows-Computer.
The Spirit hat geschrieben:er macht dann zwar ne exe drauf, aber die läuft kurz an und killt sich dann wieder selbst
Wenn du das Programm in einer Konsole startest, dann bekommst du mehr Meldungen zu sehen. Das sind wichtige Hinweise für dich, damit du weißt, was noch alles benötigt wird.

mfg
Gerold
:-)
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

Ich fasse kurz zusammen:
  • Die Quelldaten liegen auf dem Server.
  • Die Ergebnisse sollen auf dem Server abgelegt werden.
  • Das Script liegt auf dem Server.
  • Das Script soll möglichst einfach (d. h. zentral) aktualisiert werden können.
  • Die Installation von Python, dem Script und dessen Abhängigkeiten auf Arbeitsplatzrechnern möchtest du vermeiden.
Das hört sich alles ganz stark nach den Anforderungen an, die eine Web-Applikation wunderbar erfüllt. Diese liegt auf dem Server, kann dort zentral aktualisiert und gewartet werden und die Benutzer können mit einem gängigen, heutzutage als schon installiert annehmbaren Browser über das Netz auf das Web-Interface zugreifen.

Zu diesem Ergebnis bist du offenbar ja schon von selbst gekommen. Ein (eigenständiger) grafischer Client passt hier dagegen nicht mehr gut ins Bild.

Was ich empfehle? Werkzeug als Bibliothek, Apache mit mod_wsgi für den Produktionsbetrieb (zum Entwickeln kannst du die WSGI-Anwendung auch erstmal "standalone" - und mit automatischem Reloading - laufen lassen). Die Template-Engine musst du dir selbst aussuchen, machst aber mit den gängigen nichts verkehrt.

Auf geht's :)
Antworten