Bladeren bron

Cosmetics

Ask Solem 13 jaren geleden
bovenliggende
commit
322bf719a7

+ 2 - 10
celery/app/defaults.py

@@ -16,6 +16,7 @@ import sys
 from collections import deque
 from datetime import timedelta
 
+from celery.utils import strtobool
 from celery.utils.functional import memoize
 
 is_jython = sys.platform.startswith("java")
@@ -39,21 +40,12 @@ DEFAULT_TASK_LOG_FMT = """[%(asctime)s: %(levelname)s/%(processName)s] \
 %(task_name)s[%(task_id)s]: %(message)s"""
 
 
-def str_to_bool(term, table={"false": False, "no": False, "0": False,
-                             "true":  True, "yes": True,  "1": True,
-                             "on":    True, "off": False}):
-    try:
-        return table[term.lower()]
-    except KeyError:
-        raise TypeError("Can't coerce %r to type bool" % (term, ))
-
-
 class Option(object):
     alt = None
     deprecate_by = None
     remove_by = None
     typemap = dict(string=str, int=int, float=float, any=lambda v: v,
-                   bool=str_to_bool, dict=dict, tuple=tuple)
+                   bool=strtobool, dict=dict, tuple=tuple)
 
     def __init__(self, default=None, *args, **kwargs):
         self.default = default

+ 2 - 2
celery/bin/camqadm.py

@@ -18,11 +18,11 @@ from amqplib import client_0_8 as amqp
 from celery.app import app_or_default
 from celery.utils.functional import padlist
 
-from celery.app.defaults import str_to_bool
 from celery.bin.base import Command
+from celery.utils import strtobool
 
 # Map to coerce strings to other types.
-COERCE = {bool: str_to_bool}
+COERCE = {bool: strtobool}
 
 HELP_HEADER = """
 Commands

+ 4 - 1
celery/concurrency/processes/__init__.py

@@ -5,11 +5,12 @@ import os
 import platform
 import signal as _signal
 
-
 from celery import platforms
 from celery import signals
+from celery.state import set_default_app
 from celery.app import app_or_default
 from celery.concurrency.base import BasePool
+from celery.task import trace
 from billiard.pool import Pool, RUN, CLOSE
 
 if platform.system() == "Windows":  # pragma: no cover
@@ -35,6 +36,8 @@ def process_initializer(app, hostname):
     """Initializes the process so it can be used to process tasks."""
     app = app_or_default(app)
     app.set_current()
+    set_default_app(app)
+    trace._tasks = app._tasks  # make sure this optimization is set.
     platforms.signals.reset(*WORKER_SIGRESET)
     platforms.signals.ignore(*WORKER_SIGIGNORE)
     platforms.set_mp_process_title("celeryd", hostname=hostname)

+ 5 - 1
celery/loaders/default.py

@@ -17,12 +17,16 @@ import warnings
 
 from celery.datastructures import AttributeDict
 from celery.exceptions import NotConfigured
+from celery.utils import strtobool
 from celery.utils.imports import NotAPackage, find_module
 
 from .base import BaseLoader
 
 DEFAULT_CONFIG_MODULE = "celeryconfig"
 
+#: Warns if configuration file is missing if :envvar:`C_WNOCONF` is set.
+C_WNOCONF = strtobool(os.environ.get("C_WNOCONF", False))
+
 CONFIG_INVALID_NAME = """
 Error: Module '%(module)s' doesn't exist, or it's not a valid \
 Python module name.
@@ -60,7 +64,7 @@ class Loader(BaseLoader):
                         "module": configname}), sys.exc_info()[2]
         except ImportError:
             # billiard sets this if forked using execv
-            if not os.environ.get("FORKED_BY_MULTIPROCESSING"):
+            if C_WNOCONF and not os.environ.get("FORKED_BY_MULTIPROCESSING"):
                 warnings.warn(NotConfigured(
                     "No %r module found! Please make sure it exists and "
                     "is available to Python." % (configname, )))

+ 0 - 1
celery/local.py

@@ -369,7 +369,6 @@ class LocalStack(object):
             return None
 
 
-
 class LocalManager(object):
     """Local objects cannot manage themselves. For that you need a local
     manager.  You can pass a local manager multiple locals or add them later

+ 3 - 3
celery/tests/app/test_app.py

@@ -290,11 +290,11 @@ class test_defaults(Case):
 
     def test_str_to_bool(self):
         for s in ("false", "no", "0"):
-            self.assertFalse(defaults.str_to_bool(s))
+            self.assertFalse(defaults.strtobool(s))
         for s in ("true", "yes", "1"):
-            self.assertTrue(defaults.str_to_bool(s))
+            self.assertTrue(defaults.strtobool(s))
         with self.assertRaises(TypeError):
-            defaults.str_to_bool("unsure")
+            defaults.strtobool("unsure")
 
 
 class test_debugging_utils(Case):

+ 10 - 1
celery/utils/__init__.py

@@ -166,7 +166,16 @@ def maybe_reraise():
         del(exc_info)
 
 
-# - XXX Compat
+def strtobool(term, table={"false": False, "no": False, "0": False,
+                             "true":  True, "yes": True,  "1": True,
+                             "on":    True, "off": False}):
+    try:
+        return table[term.lower()]
+    except KeyError:
+        raise TypeError("Can't coerce %r to type bool" % (term, ))
+
+# ------------------------------------------------------------------------ #
+# > XXX Compat
 from .log import LOG_LEVELS     # noqa
 from .imports import (          # noqa
         qualname as get_full_cls_name, symbol_by_name as get_cls_by_name,

+ 1 - 1
celery/utils/threads.py

@@ -100,4 +100,4 @@ if detect_environment() == "default":
                 return None
 else:
     # See #706
-    from celery.local import LocalStack
+    from celery.local import LocalStack  # noqa

+ 2 - 1
celery/worker/__init__.py

@@ -303,7 +303,8 @@ class WorkController(configurated):
         # and means that only a single app can be used for workers
         # running in the same process.
         set_default_app(self.app)
-        trace._tasks = self.app.tasks
+        app.finalize()
+        trace._tasks = self.app._tasks
 
         self._shutdown_complete = Event()
         self.setup_defaults(kwargs, namespace="celeryd")

+ 2 - 2
celery/worker/state.py

@@ -67,12 +67,12 @@ def task_ready(request):
     reserved_requests.discard(request)
 
 
-if os.environ.get("CELERY_BENCH"):  # pragma: no cover
+C_BENCH = os.environ.get("C_BENCH") or os.environ.get("CELERY_BENCH")
+if C_BENCH:  # pragma: no cover
     import atexit
 
     from time import time
     from billiard import current_process
-    from celery.utils.compat import format_d
     from celery.utils.debug import memdump, sample_mem
 
     all_count = 0