Browse Source

Control: Output warning if multiple replies from same nodename. Closes #1377

Ask Solem 12 years ago
parent
commit
59e1f54ab4
2 changed files with 20 additions and 0 deletions
  1. 16 0
      celery/app/control.py
  2. 4 0
      celery/exceptions.py

+ 16 - 0
celery/app/control.py

@@ -9,15 +9,31 @@
 """
 from __future__ import absolute_import
 
+import warnings
+
 from kombu.pidbox import Mailbox
 from kombu.utils import cached_property
 
+from celery.exceptions import DuplicateNodenameWarning
+
 from . import app_or_default
 
+W_DUPNODE = """\
+Received multiple replies from node name {0!r}.
+Please make sure you give each node a unique nodename using the `-n` option.\
+"""
+
 
 def flatten_reply(reply):
     nodes = {}
+    seen = set()
     for item in reply:
+        dup = next((nodename in seen for nodename in item), None)
+        if dup:
+            warnings.warn(DuplicateNodenameWarning(
+                W_DUPNODE.format(dup),
+            ))
+        seen.update(item)
         nodes.update(item)
     return nodes
 

+ 4 - 0
celery/exceptions.py

@@ -134,3 +134,7 @@ class IncompleteStream(Exception):
 
 class ChordError(Exception):
     """A task part of the chord raised an exception."""
+
+
+class DuplicateNodenameWarning(UserWarning):
+    """Multiple workers are using the same nodename."""