2017-05-17 3 views
1

Ich stoße auf ein Problem, bei dem mein verteilter Cluster zu "hängen" scheint - z. Aufgaben stoppen die Verarbeitung und daher baut sich ein Rückstand von nicht verarbeiteten Aufgaben auf, also suche ich nach einer Möglichkeit, um bei der Fehlersuche zu helfen.So erhalten Sie Informationen zu einer bestimmten DASC-Task

Auf der Client gibt es die processing Methode, die mir sagen, welche Aufgaben, die derzeit auf jeden Arbeitnehmer aber AFAICS ausführen, die nur Informationen über die Aufgaben auf dem Client Objekt ist?

Was ich möchte, ist in der Lage, nicht nur Verarbeitungstasks, sondern alle Aufgaben einschließlich verarbeitet, Verarbeitung und Fehler und für jede Aufgabe in der Lage sein, einige Statistiken wie submitted_time und completion_time zu bekommen, die erlauben würde Ich möchte herausfinden, welche Aufgaben den Cluster blockieren.

zu bekommen wäre, in der Lage sein zu zu den args/kwargs für jede Aufgabe geben ipyparallel.AsyncResult

Ein schöner Dies wäre ähnlich den erweiterten Metadaten auf den. Dies wäre besonders hilfreich beim Debuggen fehlgeschlagener Aufgaben.

Ist eine dieser Funktionen zur Zeit verfügbar oder gibt es eine Möglichkeit, die Informationen zu erhalten, nach denen ich suche?

Alle anderen Vorschläge, wie das Problem zu debuggen wäre sehr willkommen.

Antwort

2

Ab Mai 2017 gibt es keine ausdrückliche "gib mir alle Informationen über eine Aufgabe" Operation. Sie können den Client jedoch verwenden, um den Aufgabenstatus direkt zu untersuchen. Dies erfordert, dass Sie ein wenig in die Informationen eintauchen, die der Scheduler und der Mitarbeiter verfolgen. Siehe folgende doc Seiten:

dieser Zustand Zur Abfrage würde ich die Client.run_on_scheduler und Client.run Methoden. Diese nehmen eine Funktion auf, die auf dem Scheduler oder den Arbeitern ausgeführt wird. Wenn diese Funktion ein dask_scheduler oder dask_worker Argument enthält, wird der Funktion das Scheduler- oder Worker-Objekt selbst zugewiesen.

Sie haben jetzt Zugriff auf jeden Status, den der Scheduler oder die Arbeiter kennen und alle internen Diagnoseprüfungen ausführen. Was Sie untersuchen, hängt jedoch ganz von Ihrem Anwendungsfall ab.

def f(keys, dask_scheduler=None): 
    return dask_scheduler.transition_story(*keys) 

client.run_on_scheduler(f, [key1, key2, key3]) 
+0

Sieht aus wie das sein sollte: def f(keys, dask_scheduler): return dask_scheduler.transition_story(*keys)

+0

Dank @DaveHirschfeld. Fest – MRocklin

Verwandte Themen