cronjob oder Programm

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Krie9er
User
Beiträge: 22
Registriert: Montag 30. März 2020, 20:06

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
Benutzeravatar
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
Krie9er
User
Beiträge: 22
Registriert: Montag 30. März 2020, 20:06

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?
nezzcarth
User
Beiträge: 1635
Registriert: Samstag 16. April 2011, 12:47

Zwischenfrage: Gibt es einen Grund, weshalb du das selbst programmierst und nicht eine existierende Monitoring Software verwendest?
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
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?
Wenn das Programm beim Systemstart mit starten soll, dann schreibst du dir einfach eine systemd Service Unit dafür.

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
Krie9er
User
Beiträge: 22
Registriert: Montag 30. März 2020, 20:06

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.
Antworten