|
@@ -13,7 +13,9 @@ from celery import signals
|
|
|
from celery.exceptions import ImproperlyConfigured
|
|
|
from celery.routes import Router
|
|
|
from celery.task import discard_all
|
|
|
-from celery.utils import info, get_full_cls_name, LOG_LEVELS
|
|
|
+from celery.utils import get_full_cls_name, LOG_LEVELS
|
|
|
+from celery.utils import info
|
|
|
+from celery.utils import term
|
|
|
from celery.worker import WorkController
|
|
|
|
|
|
|
|
@@ -43,7 +45,8 @@ class Worker(object):
|
|
|
hostname=None, discard=False, run_clockservice=False,
|
|
|
schedule=None, task_time_limit=None, task_soft_time_limit=None,
|
|
|
max_tasks_per_child=None, queues=None, events=False, db=None,
|
|
|
- include=None, defaults=None, pidfile=None, **kwargs):
|
|
|
+ include=None, defaults=None, pidfile=None,
|
|
|
+ redirect_stdouts=None, redirect_stdouts_level=None, **kwargs):
|
|
|
if defaults is None:
|
|
|
from celery import conf
|
|
|
defaults = conf
|
|
@@ -64,11 +67,16 @@ class Worker(object):
|
|
|
defaults.CELERYD_TASK_SOFT_TIME_LIMIT)
|
|
|
self.max_tasks_per_child = (max_tasks_per_child or
|
|
|
defaults.CELERYD_MAX_TASKS_PER_CHILD)
|
|
|
+ self.redirect_stdouts = (redirect_stdouts or
|
|
|
+ defaults.REDIRECT_STDOUTS)
|
|
|
+ self.redirect_stdouts_level = (redirect_stdouts_level or
|
|
|
+ defaults.REDIRECT_STDOUTS_LEVEL)
|
|
|
self.db = db
|
|
|
self.queues = queues or []
|
|
|
self.include = include or []
|
|
|
self.pidfile = pidfile
|
|
|
self._isatty = sys.stdout.isatty()
|
|
|
+ self.colored = term.colored(enabled=defaults.CELERYD_LOG_COLOR)
|
|
|
|
|
|
if isinstance(self.queues, basestring):
|
|
|
self.queues = self.queues.split(",")
|
|
@@ -89,7 +97,8 @@ class Worker(object):
|
|
|
self.init_queues()
|
|
|
self.worker_init()
|
|
|
self.redirect_stdouts_to_logger()
|
|
|
- print("celery@%s v%s is starting." % (self.hostname, __version__))
|
|
|
+ print(str(self.colored.cyan(
|
|
|
+ "celery@%s v%s is starting." % (self.hostname, __version__))))
|
|
|
|
|
|
if getattr(os, "geteuid", None) and os.geteuid() == 0:
|
|
|
warnings.warn(
|
|
@@ -104,7 +113,7 @@ class Worker(object):
|
|
|
|
|
|
# Dump configuration to screen so we have some basic information
|
|
|
# for when users sends bug reports.
|
|
|
- print(self.startup_info())
|
|
|
+ print(str(self.colored.reset(" \n", self.startup_info())))
|
|
|
self.set_process_status("Running...")
|
|
|
|
|
|
self.run_worker()
|
|
@@ -143,7 +152,9 @@ class Worker(object):
|
|
|
# Redirect stdout/stderr to our logger.
|
|
|
if not handled:
|
|
|
logger = log.get_default_logger()
|
|
|
- log.redirect_stdouts_to_logger(logger, loglevel=logging.WARNING)
|
|
|
+ if self.redirect_stdouts:
|
|
|
+ log.redirect_stdouts_to_logger(logger,
|
|
|
+ loglevel=self.redirect_stdouts_level)
|
|
|
|
|
|
def purge_messages(self):
|
|
|
discarded_count = discard_all()
|