ich überwachen Aufgaben über async_nolink laufen und am Ende wartet auf mehrere Ergebnisse mit Task.yield_many
- Beispielcode:Elixir Aufgabe Identifizierung
request =
1..10
|> Enum.map fn x ->
result = Task.Supervisor.async_nolink(Final.TaskSupervisor, fn ->
res = case x do
2 -> x + "abc"
_ -> x + x
end
end)
end
results = Task.yield_many(request, 5000)
Wenn nun Aufgabe von „2“ abstürzt genannt, wie kann ich die Nummer identifizieren? Oder in der realen Welt wäre das Ereignis, das die Aufgabe gestartet hat (in meinem Fall der Domänenname).
Ich schrieb lange reduzieren Code, der Aufgaben in einer Liste speichert, Tupel von task.ref
und Bezeichner (Domänenname) in einem anderen. Dann kombiniere ich diese Aufgaben mit einer anderen Gruppe von Aufgaben und nach yield_many
Kreuz wieder Vergleich ... Scheint viel zu chaotisch für schöne Sprache wie Elixier :)
Fehle ich etwas einfacher Alternative?