Parcourir la source

celeryd: Added the ability to set custom hostname via -n|--hostname

Ask Solem il y a 15 ans
Parent
commit
ca14eb206c
3 fichiers modifiés avec 23 ajouts et 5 suppressions
  1. 13 1
      celery/bin/celeryd.py
  2. 8 2
      celery/worker/__init__.py
  3. 2 2
      celery/worker/listener.py

+ 13 - 1
celery/bin/celeryd.py

@@ -17,6 +17,10 @@
     Logging level, choose between ``DEBUG``, ``INFO``, ``WARNING``,
     ``ERROR``, ``CRITICAL``, or ``FATAL``.
 
+.. cmdoption:: -n, --hostname
+
+    Set custom hostname.
+
 .. cmdoption:: -B, --beat
 
     Also run the ``celerybeat`` periodic task scheduler. Please note that
@@ -35,6 +39,7 @@
 """
 import os
 import sys
+import socket
 import logging
 import optparse
 import traceback
@@ -79,6 +84,9 @@ OPTION_LIST = (
     optparse.make_option('-l', '--loglevel', default=conf.CELERYD_LOG_LEVEL,
             action="store", dest="loglevel",
             help="Choose between DEBUG/INFO/WARNING/ERROR/CRITICAL/FATAL."),
+    optparse.make_option('-n', '--hostname', default=None,
+            action="store", dest="hostname",
+            help="Set custom host name. E.g. 'foo.example.com'."),
     optparse.make_option('-B', '--beat', default=False,
             action="store_true", dest="run_clockservice",
             help="Also run the celerybeat periodic task scheduler. \
@@ -91,10 +99,13 @@ OPTION_LIST = (
 
 def run_worker(concurrency=conf.CELERYD_CONCURRENCY,
         loglevel=conf.CELERYD_LOG_LEVEL, logfile=conf.CELERYD_LOG_FILE,
+        hostname=None,
         discard=False, run_clockservice=False, events=False, **kwargs):
     """Starts the celery worker server."""
 
-    print("Celery %s is starting." % celery.__version__)
+    hostname = hostname or socket.gethostname()
+
+    print("celery@%s v%s is starting." % (hostname, celery.__version__))
 
     from celery.loaders import current_loader, load_settings
     loader = current_loader()
@@ -157,6 +168,7 @@ def run_worker(concurrency=conf.CELERYD_CONCURRENCY,
         worker = WorkController(concurrency=concurrency,
                                 loglevel=loglevel,
                                 logfile=logfile,
+                                hostname=hostname,
                                 embed_clockservice=run_clockservice,
                                 send_events=events)
 

+ 8 - 2
celery/worker/__init__.py

@@ -3,8 +3,9 @@
 The Multiprocessing Worker Server
 
 """
-import traceback
+import socket
 import logging
+import traceback
 from Queue import Queue
 
 from celery import conf
@@ -101,13 +102,15 @@ class WorkController(object):
     _state = None
 
     def __init__(self, concurrency=None, logfile=None, loglevel=None,
-            send_events=conf.SEND_EVENTS, embed_clockservice=False):
+            send_events=conf.SEND_EVENTS, hostname=None,
+            embed_clockservice=False):
 
         # Options
         self.loglevel = loglevel or self.loglevel
         self.concurrency = concurrency or self.concurrency
         self.logfile = logfile or self.logfile
         self.logger = setup_logger(loglevel, logfile)
+        self.hostname = hostname or socket.gethostname()
         self.embed_clockservice = embed_clockservice
         self.send_events = send_events
 
@@ -129,15 +132,18 @@ class WorkController(object):
                                  logger=self.logger)
         self.scheduler = ScheduleController(self.eta_schedule,
                                             logger=self.logger)
+
         # Need a tight loop interval when embedded so the program
         # can be stopped in a sensible short time.
         self.clockservice = self.embed_clockservice and ClockServiceThread(
                                 logger=self.logger,
                                 max_interval=1) or None
+
         prefetch_count = concurrency * conf.CELERYD_PREFETCH_MULTIPLIER
         self.listener = CarrotListener(self.ready_queue,
                                        self.eta_schedule,
                                        logger=self.logger,
+                                       hostname=self.hostname,
                                        send_events=send_events,
                                        initial_prefetch_count=prefetch_count)
 

+ 2 - 2
celery/worker/listener.py

@@ -44,14 +44,14 @@ class CarrotListener(object):
     """
 
     def __init__(self, ready_queue, eta_schedule, logger,
-            send_events=False, initial_prefetch_count=2):
+            send_events=False, hostname=None, initial_prefetch_count=2):
         self.connection = None
         self.task_consumer = None
         self.ready_queue = ready_queue
         self.eta_schedule = eta_schedule
         self.send_events = send_events
         self.logger = logger
-        self.hostname = socket.gethostname()
+        self.hostname = hostname or socket.gethostname()
         self.control_dispatch = ControlDispatch(logger=logger,
                                                 hostname=self.hostname)
         self.prefetch_count = SharedCounter(initial_prefetch_count)