Statischen Thread

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
rads
User
Beiträge: 153
Registriert: Freitag 26. März 2010, 15:51

Hallo,

ich hatte das Problem schonmal letzte Woche beschrieben, aber an sich immer noch keine Lösung gefunden.

Ich möchte einen Thread starten, und möchte im weiteren Systembetrieb immer mal wieder kontrollieren, ob
der Thread noch läuft, oder ob ich diesen eventuell eben neu starten müsste.

Das Problem ist, ich bin in der Pluginentwicklung und bekomme einfach nichts statisch zu greifen, wo ich
diesen Thread anbinden könnte.
Hintergrund:
In der Trac Umgebung ist alles lose gekoppelt und so ist es wie erwähnt etwas schwierig etwas Statisches zu greifen.

An sich bekomme ich ja eine eindeutige ID vom Thread zurück, allerdings kann ich mir diese nicht merken (außer ich schreibe sie in die config datei, auch unschön)

So Ideen,
- ist es möglich einen Thread auch über einen definierten Namen zu finden? (also setName kenn ich ja, aber wie finde ich den wieder, wenn ich die referenz nicht habe?)
- kann ich an der aktuell laufenden python umgebung sowas (ein Object) irgendwie statisch verknüpfen?

Hoffe mir könnt wer helfen, grüße Stefan
BlackJack

@rads: Hilft Dir `threading.enumerate()` weiter?
rads
User
Beiträge: 153
Registriert: Freitag 26. März 2010, 15:51

@BlackJack. vielen Dank genau das hab ich gesucht

Falls mal wer was ähnliches machen will:

Code: Alles auswählen

    def _TimerIsStillAlive(self):
        threadList = threading.enumerate()
        for threadOb in threadList:
            if threadOb.name == "hugo":
                if  threadOb.isAlive() == False:
                    self._createXMailThread()
                return
        self._createXMailThread()
    
    def _createXMailThread(self):
        myThread = self.myMailTimer(self._sendAllMails,self.DEFAULT_SLEEP_TIME)
        myThread.setName("hugo")
        myThread.start()
Antworten