Explorar o código

Events from clients now uses generated nodename "gen<pid>@<hostname>"

Ask Solem %!s(int64=11) %!d(string=hai) anos
pai
achega
843312ea3c
Modificáronse 2 ficheiros con 10 adicións e 4 borrados
  1. 4 4
      celery/events/__init__.py
  2. 6 0
      celery/utils/__init__.py

+ 4 - 4
celery/events/__init__.py

@@ -12,7 +12,6 @@ from __future__ import absolute_import
 
 import os
 import time
-import socket
 import threading
 import warnings
 
@@ -27,7 +26,7 @@ from kombu.mixins import ConsumerMixin
 from kombu.utils import cached_property
 
 from celery.app import app_or_default
-from celery.utils import uuid
+from celery.utils import anon_nodename, uuid
 from celery.utils.functional import dictfilter
 from celery.utils.timeutils import adjust_timestamp, utcoffset, maybe_s_to_ms
 
@@ -90,7 +89,8 @@ class EventDispatcher(object):
     :param connection: Connection to the broker.
 
     :keyword hostname: Hostname to identify ourselves as,
-        by default uses the hostname returned by :func:`socket.gethostname`.
+        by default uses the hostname returned by
+        :func:`~celery.utils.anon_nodename`.
 
     :keyword groups: List of groups to send events for.  :meth:`send` will
         ignore send requests to groups not in this list.
@@ -126,7 +126,7 @@ class EventDispatcher(object):
         self.app = app_or_default(app or self.app)
         self.connection = connection
         self.channel = channel
-        self.hostname = hostname or socket.gethostname()
+        self.hostname = hostname or anon_nodename()
         self.buffer_while_offline = buffer_while_offline
         self.mutex = threading.Lock()
         self.producer = None

+ 6 - 0
celery/utils/__init__.py

@@ -9,6 +9,7 @@
 from __future__ import absolute_import, print_function
 
 import os
+import socket
 import sys
 import traceback
 import warnings
@@ -270,6 +271,11 @@ def nodename(name, hostname):
     return NODENAME_SEP.join((name, hostname))
 
 
+def anon_nodename(hostname=None, prefix='gen'):
+    return nodename(''.join([prefix, str(os.getpid())]),
+                    hostname or socket.gethostname())
+
+
 def nodesplit(nodename):
     """Split node name into tuple of name/hostname."""
     parts = nodename.split(NODENAME_SEP, 1)