Datenaustausch zwischen Flask und Python-Anwendung

Django, Flask, Bottle, WSGI, CGI…
Antworten
numumba
User
Beiträge: 1
Registriert: Montag 29. August 2016, 06:30

Hallo,

ich beschäftige mich erst seit kurzer Zeit und privat mit Python.
Seit diesem Wochenende habe ich ein Problem, für das ich noch keinen Lösungsansatz im Netz gefunden habe. Warscheinlich fehlt mir aber auch nur der richtige Suchbegriff.

Also, ich habe ein Python-Anwendung die in der Konsole läuft. Diese Anwendung realisiert das zeitgesteuerte ein bzw. ausschalten eines Relais-Modul via. SPI. Dieser Anwendung möchte ich gerne um eine WEB-Oberfläche erweitern. Als Framework habe ich mir Flask ausgeguckt (schein sehr einfach zu sein). Jetzt stehe ich vor folgendem Problem, Flask reagier (warscheinlich) nur auf Anfragen und führt somit auch nur dann den geschriebenen Code aus. Das Programm muss aber kontinuierlich laufen, da sonst die Zeitabhängigkeit verloren geht.

Meine Fragen:
1. Wie kann ich Daten zwischen dem Python-Skript der Anwendung und dem Python-Flask-Skript austauschen?
oder
2. Ist es möglich, die von mir geschriebenen Flask-Anweisungen als Funktionen im Code des Python-Skriptes auszuführen?
oder
3. Gibt es eine anderen Weg mein Anliegen umzusetzen?

Danke im Voraus.
Numumba
Sirius3
User
Beiträge: 17712
Registriert: Sonntag 21. Oktober 2012, 17:20

@numumba: zu 1) es gibt viele Möglichkeiten der Interprozess-Kommunikation. Heutzutage nimmt man meist TCP-Sockets, wenn nicht gar gleich HTTP mit einem REST-Interface. Womit wir gleich zu 2) oder 3) kommen. Du kannst neben dem Flask-Server auch noch andere Threads parallel laufen lassen, die irgendetwas "kontinuierlich" machen, mit den ganzen Schwierigkeiten, auf die man immer achten muß, wenn nebenläufigen Programme schreibt. Aber um das Thema Nebenläufigkeit wirst Du nicht drumrum kommen, wenn Du mehrere Dinge gleichzeitig erledigen willst.
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Das Programm muss aber kontinuierlich laufen, da sonst die Zeitabhängigkeit verloren geht.
Schaltet das Programm wirklich nur ein Relais? Dann ist ein dauerhaft laufendes Programm normalerweise Prozesszeitverschwendung. Das kannst du auch über eine systemd Timer Unit oder eine cron-Job realisieren (sofern der Relais nicht im sekundentakt oder so geschaltet wird).

Was soll den die Weboberfläche können? Nur den Zustand des Relais anzeigen oder es auch schalten?

Gruß, noisefloor
Antworten