Einfachstes Control Center

Django, Flask, Bottle, WSGI, CGI…
Antworten
Gerenuk
User
Beiträge: 69
Registriert: Donnerstag 21. Januar 2010, 22:27

Hi!
habt ihr einen Vorschlag wie ich am einfachsten einen Webservice anbieten kann, wo Leute sich einloggen und dann auf paar Buttons klicken um Aktionen zu starten (externe Programme)?
Wäre auch gut wenn sie dann Status- bzw Rückmeldungen sehen könnten und auch gut, wenn man die Seite minimal organisiert, indem man z.B. verschiedene Seiten hat. Welche Buttons genau angezeigt werden möchte ich leicht konfigurieren können.
Im Idealfall könnten sich mehrere auf einmal Einloggen und dann muss das Button klicken evtl koordiniert werden (als z.B. ein Lock falls der andere schon etwas gestartet hat und es noch läuft).
Also viel mehr soll es nicht sein :) Was wäre da die einfachste Lösung in Python?
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Wie wäre es mit Microwebframework (Flask oder Bottle z.B.) plus Celery? Für Flask gibt es auch ein Celery-Addon, wobei das jetzt nicht so viel macht, d.h. man kann auch gut Bottle nehmen (oder was auch immer).

Die Benutzung einer Task-Queue macht halt auch deswegen Sinn, weil du dir dann nicht mehr Sorgen machen musst um Locking usw, und weil dir Celery eine recht einfache Möglichkeit gibt, auch den Zwischenstatus/Fortschritt eines solchen Tasks zu speichern. (Falls du keine richtige AMQP-Queue installieren kannst auf dem Server kannst du auch diese "Ghetto-Queue" nutzen; das nutzt einfach deine SQL-Datenbank, performt zwar nicht so schön und ist nicht 100% Chaos-sicher aber tut seinen Zweck bei kleineren Setups.)
Gerenuk
User
Beiträge: 69
Registriert: Donnerstag 21. Januar 2010, 22:27

Ich schau es mir mal an. Noch weiß ich nicht viel über Webprogrammierung. Aber "Micro" klingt schonmal gut :) Danke!
Gerenuk
User
Beiträge: 69
Registriert: Donnerstag 21. Januar 2010, 22:27

Kennst du zufällig Bottle oder Flask selbst - so auf Anhieb überblicke ich die Dokumentation nicht und würde gerne nur eine davon lesen? :) Könnte ich da z.B. auf der Seite mit den Buttons die Statusmeldungen anzeigen oder noch besser einen Realtime log? Können sich mehrere User einloggen? Und kann ich Dateien zum download anbieten?
BlackJack

@Gerenuk: Ich habe den Eindruck Du stellst Dir das ein bisschen zu einfach vor. Du wirst Dich intensiver mit Webprogrammierung beschäftigen müssen. Bei Bottle musst Du Dir Deine Benutzerverwaltung selber programmieren. Bei Django gibt es so etwas schon fertig, dafür muss man sich da auch in das Rahmenwerk mehr einarbeiten.

Ausserdem ist man den Beschränkungen von Webanwendungen unterworfen. Zum Beispiel, das HTTP ein zustandsloses Protokoll ist, und das der Client die treibende Kraft ist, d.h. wenn Du Realtime-Logs haben möchtest, dann muss in der Regel der Client ständig nach neuen Zeilen aus dem Log fragen.
Gerenuk
User
Beiträge: 69
Registriert: Donnerstag 21. Januar 2010, 22:27

Na deswegen sag ich ja dass es einfach soll :) Schließlich will ich nur ein paar Buttons die Programme ausführen und keine vollwertige Webprogrammierung. Und wäre cool wenn es trotzdem Login gibt.
Wobei ich brauche keine User Accounts, sondern nur Login. Mir scheint CherryPy wäre auch ganz OK.

Das mit dem Log ginge noch halbwegs über Seiten Refresh?!
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Also dann schau Dir mal flask an. Die Doku ist zum einen sehr ausführlich und mit vielen Beispielen versehen, zum anderen bringt flask eine fertige Authetifizierung mit. Allerdings weiß ich nicht, wie weit bottle an diesem Punkt mittlerweile ist; afair wollte Defnull daran arbeiten.

Allerdings denke ich auch, dass das nicht unbedingt die beste Idee ist, sich nur wischei waschi mit Webprogrammierung zu befassen, speziell wenn man ggf. sicherheitskritische Systemaufrufe damit kapselt!
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Gerenuk
User
Beiträge: 69
Registriert: Donnerstag 21. Januar 2010, 22:27

Na die Aufrufe sind intern und da macht hoffentlich keiner was kaputt.

Flask hatte ich angeschaut und schien ganz nett. Bloß dann fand ich die Webseite von CherryPy hübscher und dachte erst ich nehme das. Ist das vergleichbar?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Gerenuk hat geschrieben:Na die Aufrufe sind intern und da macht hoffentlich keiner was kaputt.
Ja und? Du greifst aber per http auf ein Script zu, welches sich im Netz erreichbar befindet. Das können also auch andere, die das besser nicht sollten. Und wenn die das Login umgehen können, kanns eben böse werden.
Flask hatte ich angeschaut und schien ganz nett. Bloß dann fand ich die Webseite von CherryPy hübscher und dachte erst ich nehme das. Ist das vergleichbar?
Also ich finde die Ruby Seite ja schöner, vielleicht steigst Du von der Sprache her um? :twisted:

Mal im Ernst: Ich habe mich mit CherryPy noch nicht näher befasst, glaube aber das das eine Ecke mächtiger und damit komplexer zu durchschauen ist als flask. Ich habe ja auch nur entsprechend Deiner eigenen Anforderungen eine Empfehlung ausgesprochen, da man ein simples Login und eine Seite, über die man eine Aktion triggern kann mit flask in vermutlich weniger als 30 Zeilen implementieren kann. Für Rückmeldungen kommt dann eben noch einiges an JavaScript hinzu; aber das ist ja eh bei allen Ansätzen identisch.

Ich würde bei so einem Projekt anhand der Dokumentation entscheiden; bei welcher kapiere ich die Mechanismen des Ablaufs innerhalb des Frameworks besser? Wo verstehe ich die Erklärungen besser? Wie aktuell ist die Doku? usw.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Gerenuk hat geschrieben:Na die Aufrufe sind intern und da macht hoffentlich keiner was kaputt.
Alles außerhalb der eigenen Anwendung ist Feindesland.
Das ist eine Standardrichtlinie für jede Art von Softwareentwicklung.
Antworten