WebApp mit Hintergrund Task

Django, Flask, Bottle, WSGI, CGI…
Antworten
danix345
User
Beiträge: 2
Registriert: Donnerstag 10. Juni 2021, 17:55

Guten Abend zusammen,

ich bin in Python generell neu und bräuchte Hilfe wie ich mein Projekt überhaupt aufbauen sollte und welche Module geeignet sind. Ich habe schon einiges versucht aber immer wieder stoße ich an Grenzen von Modulen oder Python selbst oder meine eigenen. Und zwar geht es um folgendes:
Ich möchte eine WebApp machen, diese soll Daten eines Live-Prozesses nicht nur anzeigen sondern auch durch Button-Klicks oder Eingabe von Werten ändern. Basierend darauf und auf ausgewerteten Sensoren werden verschiedene Ausgänge geschalten. Das ganze läuft auf einem Raspberry Pi.

Ich habe jetzt mit Flask angefangen. Die Website läuft auch. Problem wurde dann der Hintergrundtask (eine while-Schleife), der parallel laufen soll. Also habe ich den Hintergrundtask als Multiprocess laufen lassen. Jetzt läuft der Webserver und der Hintergrundtask gleichzeitig. Das Programm ist jetzt so aufgebaut: Es gibt eine main.py und eine webserver.py. In main.py wird eine Funktion aus webserver.py aufgerufen, die den Webserver startet. Danach wird der Hintergrundtask als Multiprozess aufgerufen. In dieser Funktion/Schleife werden weitere Funktionen aufgerufen die immer wieder ausgeführt werden und die Variablen ändern oder verarbeiten.

Ich frage mich bzw. euch, ob der Ansatz so richtig ist neben Flask einen Multiprozess mit dem eigentlichen Programm laufen zu lassen?
Außerdem komme ich nicht weiter, wie ich die Variablen, die aus der Eingabe in der WebApp entstehen, sich also in einer anderen Datei (webserver.py) befinden, nun in meinen Multiprozess aus main.py bekomme und umgekehrt.

Ich hoffe ihr könnt mir ein paar Tipps zum Aufbau des Programms geben.
Schönen Grüße

Daniel
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Wie immer bei Nebenläufiger Programmierung muß man für die Kommunikation passende Datenstrukturen verwenden. Das hängt natürlich stark davon ab, welche Daten Du verarbeitest. Bei einer Web-Application könnte auch eine Datenbank das richtige sein.
danix345
User
Beiträge: 2
Registriert: Donnerstag 10. Juni 2021, 17:55

Nun es sind keine großen Datenmengen. Ein paar Beispiele wären z.B.:
In der WebApp wähle ich eine Zahl zwischen 0 und 100 via html input. Diese soll an den Backgroundtask übergeben werden, der widerrum diese Variable an eine Funktion übergibt die ein Heizelement stufenlos ansteuert (0-100%). Eine Datenbank werde ich auch verwenden für Rezepte die geladen werden müssen. Jedoch sehe ich eine Datenbank nicht sinnvoll um ein Heizelement oder eine Pumpe anzusteuern. Ein anderes Beispiel, es sollen auch Text inputs möglich sein, diese sollen auch an den Hintergrund task übergeben werden und von dort aus in die Datenbank geladen werden. Wäre für mich jetzt einfacher alles an den HintergrundTask zu übergeben und von dort aus die Daten weiter zu verteilen.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wieso ist die Datenbank nicht sinnvoll? Was passiert denn, wenn das System neu gestartet werden muss? Hast du dir dann den letzten Wert mühselig selbst gemerkt, in einer Datei zb? Und wie robust gehts du da vor, um dich vor Korruption und Fehlern des Dateisystems zu schützen? Alles Dinge, welche die Entwickler der Datenbank schon erledigt haben.
Antworten