Hallo, ich bin noch ein python rookie.
Also vergebt mir.
Problem:
Ich wuerde gerne eienen auf einem Farm - node laufenden batchjob ueberwachen,
indem ich dass beim job entstehende output.txt (plain ASCI) von zeit zu zeit parse.
Job lauft im Schnitt so einen Tag.
Idee war das eigentliche Programm des Jobs von einem Python Sript aus zu starten
und dann waerend es laeuft den output zu bewachen. Ich nehme aber mal an das ein
aufruf ala os.system("bla") den pogrammfluss blockiert bis der Job durch ist.
Fragen:
1. Wie starte ich also auf schlauer Art und Weise den Waechter und das Programm?
2. Wie lese ich mueglichst ressourscen sparend ein Textfile schritt fuer schritt waerend es geschrieben wird ?
Danke, Stephan
File, das gerade geschrieben wird bewachen und parsen ?
Du kannst das File blockend lesen. Falls Du was lesen kannst hat sich was geändert -> Aktion.
Oder mit irgendwelchen os-Routinen (selber schauen!). Dann gibt's noch FAM, damit hatte ich aber schlechte Erfahrung gemacht.
Was für eine Farm ist denn das? Pinguine, Dämonen, Fenster ...
cu beyond
Oder mit irgendwelchen os-Routinen (selber schauen!). Dann gibt's noch FAM, damit hatte ich aber schlechte Erfahrung gemacht.
Was für eine Farm ist denn das? Pinguine, Dämonen, Fenster ...
cu beyond
@ Beyond
- pinguine stemmen die farm.
- Danke fuer den Tipp werd ich mal probieren (Kannst Du eventuell auch die Syntax fuer blockend lesen posten? Wenn nicht such ich halt mal, ist auch nich schlimm)
Im Moment hab ichs jetzt so geloest:
jobscript startet "watchdogsript.py&" und dann "TheExecuteable > out.txt"
watchdogscript.py
sieht dann so aus:
- pinguine stemmen die farm.
- Danke fuer den Tipp werd ich mal probieren (Kannst Du eventuell auch die Syntax fuer blockend lesen posten? Wenn nicht such ich halt mal, ist auch nich schlimm)
Im Moment hab ichs jetzt so geloest:
jobscript startet "watchdogsript.py&" und dann "TheExecuteable > out.txt"
watchdogscript.py
sieht dann so aus:
Code: Alles auswählen
while 1:
hol dir infos aus out.txt mit string=file.read() und string parsen
verschicke infos mit socket.send(pickle.dumps(infos)) an server
if (in out.txt steht das TheExecuteable durch ist) :
break
Ist noch nicht die Krone, aber naja...
bin auf jeden Fall dankbar fuer jede weitere Verbesserung
Stephan
Also so direkt wollte es mit dem Blocken nicht. Vielleicht geht's mit socket-modul ...
Die Doku war da nicht so klar.
Ich hab' aber 'ne Lösung die geht:
cu beyond
Die Doku war da nicht so klar.
Ich hab' aber 'ne Lösung die geht:
Code: Alles auswählen
import os
f= os.popen('tail -f /verzeichnis/DieDatei')
while "aeons":
val= f.read(1)
...