diff --git a/docker/api/main.py b/docker/api/main.py index 3c2bf26..1b8901d 100644 --- a/docker/api/main.py +++ b/docker/api/main.py @@ -662,10 +662,15 @@ async def capabilities(): for zeile in zeilen: # Celery-Knotenname = @. Der Ping liefert ihn voll; # gematcht wird über den Hostname (der Docker-Worker heißt celery@…, - # der WORKER_NAME steckt nur in info). `node` ist der Routing-Ziel- - # Knoten für die gezielte Encoder-Wahl. + # der WORKER_NAME steckt nur in info). Laufen MEHRERE Worker auf + # demselben Host (Befund 24.07.), disambiguiert der Name-Teil — + # sonst bekäme der falsche Worker den Node. `node` ist der + # Routing-Ziel-Knoten für die gezielte Encoder-Wahl. hostname = (zeile.get("info") or {}).get("hostname") or zeile["name"] - node = next((k for k in ping_knoten if k.split("@", 1)[-1] == hostname), None) + kandidaten = [k for k in ping_knoten if k.split("@", 1)[-1] == hostname] + node = next( + (k for k in kandidaten if k.split("@", 1)[0] == zeile["name"]), None + ) or (kandidaten[0] if kandidaten else None) zeile["online"] = node is not None zeile["node"] = node return zeilen