Hallo Liebe Gemeinde,
ich habe für meine Webseiten einen alive-checker geschrieben, der regelmäßig durch die Websites und API's geht und deren "live-status" überprüft.
Nun stehe ich vor der Frage, ob ich das Programm immer wieder von einem Cronjob ausführen lasse oder ob ich mein Programm zu einem Service umschreibe, der autonom agiert.
Das Programm läuft auf einem RaspberryPi4 2gb.
Gibt es eventuell Entscheidungsfaktoren für solch eine Entscheidung? Wie sind eure Erfahrung hier?
Schöne Grüße
Krie9er
cronjob oder Programm
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
wie oft läuft die Abfrage denn und wie lange dauert das? Wenn das Prog nur alle paar Minuten läuft und nach ein paar Sekunden fertig ist, dann bietet sich eher eine systemd Timer Unit oder "wie früher" (...) ein Cronjob an, weil das Prog sonst 99,99% seiner Zeit mit Warten auf den nächsten Einsatz verbringt.
Gruß, noisefloor
wie oft läuft die Abfrage denn und wie lange dauert das? Wenn das Prog nur alle paar Minuten läuft und nach ein paar Sekunden fertig ist, dann bietet sich eher eine systemd Timer Unit oder "wie früher" (...) ein Cronjob an, weil das Prog sonst 99,99% seiner Zeit mit Warten auf den nächsten Einsatz verbringt.
Gruß, noisefloor
Das hatte ich mich auch gedacht. Das programm läuft auf meinem Entwicklungssystem ca. 6h. Der Plan ist, dass der crawler-teil ein mal pro tag läuft. Der Alive-tracker, wiederum soll alle 15 Sekunden arbeiten.
Ich überlege den Crawler per Cronjob laufen zu lassen.
Den Alive-Tracker würde ich gerne als Programm aufrufen und dieses sollte dann mit flags gesteuert werden können. Meine Frage ist hier nur, wie stelle ich das wiederum am besten an?
mit python programm.py starte ich ja das programm, allerdings sollte es dann auch im Hintergrund laufen. Wie mache ich das am besten? Indem ich in Linux einen Service schreibe oder gibt es da Möglichkeiten es direkt im Python code zu lösen?
Ich überlege den Crawler per Cronjob laufen zu lassen.
Den Alive-Tracker würde ich gerne als Programm aufrufen und dieses sollte dann mit flags gesteuert werden können. Meine Frage ist hier nur, wie stelle ich das wiederum am besten an?
mit python programm.py starte ich ja das programm, allerdings sollte es dann auch im Hintergrund laufen. Wie mache ich das am besten? Indem ich in Linux einen Service schreibe oder gibt es da Möglichkeiten es direkt im Python code zu lösen?
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Bei einem Prog wie dem Crawler, der nur 1x pro Tag läuft schreibst du dir eine entsprechende systemd Timer Unit.
Wenn du mit einem laufenden Programm kommunizieren willst, im gegebenen Fall ja scheinbar nur Richtung Programm, gibt's verschiedene Möglichkeiten. Die einfachste ist über eine Datei, aus der der Alive-Tracker vor jedem Lauf liest. Was aber in sofern fehleranfällig sein kann, als dass du ggf. gerade die Datei editierst, wenn der Alive-Tracker diese lesen will und die Daten in der Datei ggf. unvollständig sind.
Was für "Flags" willst du denn da setzen?
Gruß, noisefloor
Wenn das Programm beim Systemstart mit starten soll, dann schreibst du dir einfach eine systemd Service Unit dafür.mit python programm.py starte ich ja das programm, allerdings sollte es dann auch im Hintergrund laufen. Wie mache ich das am besten? Indem ich in Linux einen Service schreibe oder gibt es da Möglichkeiten es direkt im Python code zu lösen?
Bei einem Prog wie dem Crawler, der nur 1x pro Tag läuft schreibst du dir eine entsprechende systemd Timer Unit.
Wenn du mit einem laufenden Programm kommunizieren willst, im gegebenen Fall ja scheinbar nur Richtung Programm, gibt's verschiedene Möglichkeiten. Die einfachste ist über eine Datei, aus der der Alive-Tracker vor jedem Lauf liest. Was aber in sofern fehleranfällig sein kann, als dass du ggf. gerade die Datei editierst, wenn der Alive-Tracker diese lesen will und die Daten in der Datei ggf. unvollständig sind.
Was für "Flags" willst du denn da setzen?
Gruß, noisefloor
Hi danke für die tollen Antworten, ihr seid eine große Hilfe:
zu nezzcarth:
Weil ich nicht nur Webseiten abrufe. Ich prüfe vielmehr, ob der Server richtig "reagiert", mehr details sind hier jedoch, denke ich nicht wichtig.
zu noisefloor:
Bei den flags hatte ich daran gedacht wie das beim tsserver gelöst ist mit sowas wie:
tsserver status|start|stop -f "datenbank-location" etc.
Leider bin ich noch nicht viel weiter gekommen, da ich mein Programm auf einem x86 Ubuntu mit pyinstaller gepackt habe und jetzt auf dem pi, auf dem das laufen soll, einen arm Prozessor habe . Das war zwar offensichtlich, im "Nachhinein" jetzt muss ich erstmal das programm auf dem Pi überhaupt zum Laufen bekommen.
zu nezzcarth:
Weil ich nicht nur Webseiten abrufe. Ich prüfe vielmehr, ob der Server richtig "reagiert", mehr details sind hier jedoch, denke ich nicht wichtig.
zu noisefloor:
Bei den flags hatte ich daran gedacht wie das beim tsserver gelöst ist mit sowas wie:
tsserver status|start|stop -f "datenbank-location" etc.
Leider bin ich noch nicht viel weiter gekommen, da ich mein Programm auf einem x86 Ubuntu mit pyinstaller gepackt habe und jetzt auf dem pi, auf dem das laufen soll, einen arm Prozessor habe . Das war zwar offensichtlich, im "Nachhinein" jetzt muss ich erstmal das programm auf dem Pi überhaupt zum Laufen bekommen.