Schrift
[thread]6740[/thread]

Multi Tasking mit Perl?: Design-Frage: POE oder Threads



<< >> 3 Einträge, 1 Seite
Gast Gast
 2005-02-25 15:44
#52142 #52142
Hallo @alle,

ich bin schon lange auf der Suche nach einer Loesung fuer folgendes Problem:
ich moechte von Perl aus ein externes Programm starten (unter Unix), dass sehr haeufig abstuertzt (daran ist leider nichts zu aendern, weil das von den Parametern abhaengt, mit denen das Programm gefuettert wird). Auf irgend eine Art und Weise moechte ich Perl in die Lage versetzen, den Ablauf dieses Programmes zu beobachten und controllieren. Dabei gibt es zwei Ausgangssituationen:

1. Das Programm hat sich ordnungsgemaess beendet und gibt die berechneten Daten zurueck
2. Das Programm laeuft viel zu lange (time out), was daraus schliessen laesst, dass es abgestuertzt ist und mit neuen, angepassten Parametern neu gestartet werden soll, oder auch nicht (nach mehreren gescheiterten versuchen)

Nach langem Suchen stellte sich heraus, dass man das ueber Threads regeln koennte, oder aber auch ueber POE, den Meister des Multitaskings, der viel flexibler ist, und einiges an Arbeit uebernimmt, finde ich.

Wie wuerdet Ihr das loesen? Hat jemand Erfahrung mit POE und kann vielleicht mit ein Paar nuetzlichen Tricks helfen? Eine konkrete Schwierigkeit die mir begegnet ist, ist z.B. dass das Programm nicht die Kontrolle an den POE-Kernel zurueckgibt, wenn was nicht stimmt. Das wuerde den reibungslosen Ablauf der ganzen Sache verhindern.
Oder kann man das vielleicht anders einfacher loesen? Wie?
Auch fuer Hinweise auf weitere Informationsquellen oder Workshops bin ich sehr dankbar.

L.G. und danke im Voraus :-)
Mel.
ptk
 2005-02-25 18:50
#52143 #52143
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
POE duerfte hier overkill sein, und threads wahrscheinlich nicht das Richtige. Was du brauchst, ist klassische IPC-Programmierung unter Unix: pipe, fork, exec, select. Die Perldoc-Seite perlipc hilft beim Implementieren. Wenn dir das zu low-level ist, kannst du Module wie IO::Select, IPC::Run oder auch POE verwenden.
Mel.
 2005-02-26 16:51
#52144 #52144
User since
2005-02-25
1 Artikel
BenutzerIn
[default_avatar]
Ok herzlichen Dank für den Tipp :-) damit habe ich auch eine gute we-Lektüre gefunden :cool:
<< >> 3 Einträge, 1 Seite



View all threads created 2005-02-25 15:44.