Resume-Jobs, wie kann der Job gestoppt werden

8

Meine Arbeitsstationsklasse

%Vor%

Ich entferne einen bestimmten Job aus der Warteschlange wie diesen

%Vor%

Aber ich würde gerne aufhören zu laufen und neu starten, wie würde ich das machen?

    
Aydar Omurbekov 20.11.2013, 13:41
quelle

2 Antworten

9

Probieren Sie die unregister_worker wie folgt aus:

%Vor%

Dieser Befehl stoppt die Arbeit und setzt sie als fehlgeschlagen.

Ссылка

    
joaofraga 20.05.2015, 19:37
quelle
1

Wenn Sie einen laufenden Job töten / stoppen möchten, ohne ihn als fehlgeschlagenen Job zu markieren, können Sie diesen Hack verwenden.

%Vor%

Nun, wo Sie diesen Code stoppen wollen, erreichen Sie einfach den Mitarbeiter, der gerade den Job ausführt, den Sie stoppen möchten. und töte seinen Kindprozess. Etwas wie den Enkelprozess von Worker zu töten.

Erläuterung:

Ein Worker forkiert einen untergeordneten Prozess, in dem die Funktion ausführen seinen Code ausführt. Wenn wir diesen untergeordneten Prozess direkt beenden, wird dieser Job gestoppt, aber als fehlgeschlagener Job markiert. Aus diesem Grund haben wir in self.perform einen weiteren Child-Prozess gegabelt und nun wird der laufende Prozess abgebrochen, um den laufenden Job zu stoppen. Außerdem wird er nicht als fehlgeschlagen markiert. Jetzt können wir den Job wieder in die Warteschlange stellen. Die Aufgabe besteht also darin, den Mitarbeiter zu erreichen, der die Aufgabe erledigt, die wir stoppen müssen (._. ")

Ich habe das geschafft, indem ich diesen Code für ein UNIX-basiertes System geschrieben habe:

%Vor%     
Aakash Gupta 28.01.2017 05:32
quelle