Переглянути джерело

FORCE_EXECV is now enabled by default

Ask Solem 13 роки тому
батько
коміт
cbd1e9ded4
4 змінених файлів з 7 додано та 9 видалено
  1. 0 5
      celery/__main__.py
  2. 1 1
      celery/app/defaults.py
  3. 3 1
      celery/apps/worker.py
  4. 3 2
      celery/worker/__init__.py

+ 0 - 5
celery/__main__.py

@@ -1,5 +0,0 @@
-from __future__ import absolute_import
-
-from celery import current_app
-
-current_app.start()

+ 1 - 1
celery/app/defaults.py

@@ -165,7 +165,7 @@ NAMESPACES = {
         "CONCURRENCY": Option(0, type="int"),
         "CONCURRENCY": Option(0, type="int"),
         "ETA_SCHEDULER": Option(None, type="string"),
         "ETA_SCHEDULER": Option(None, type="string"),
         "ETA_SCHEDULER_PRECISION": Option(1.0, type="float"),
         "ETA_SCHEDULER_PRECISION": Option(1.0, type="float"),
-        "FORCE_EXECV": Option(False, type="bool"),
+        "FORCE_EXECV": Option(True, type="bool"),
         "HIJACK_ROOT_LOGGER": Option(True, type="bool"),
         "HIJACK_ROOT_LOGGER": Option(True, type="bool"),
         "CONSUMER": Option("celery.worker.consumer.Consumer"),
         "CONSUMER": Option("celery.worker.consumer.Consumer"),
         "LOG_FORMAT": Option(DEFAULT_PROCESS_LOG_FMT),
         "LOG_FORMAT": Option(DEFAULT_PROCESS_LOG_FMT),

+ 3 - 1
celery/apps/worker.py

@@ -71,7 +71,7 @@ class Worker(configurated):
 
 
     def __init__(self, hostname=None, discard=False, embed_clockservice=False,
     def __init__(self, hostname=None, discard=False, embed_clockservice=False,
             queues=None, include=None, app=None, pidfile=None,
             queues=None, include=None, app=None, pidfile=None,
-            autoscale=None, autoreload=False, **kwargs):
+            autoscale=None, autoreload=False, no_execv=False, **kwargs):
         self.app = app = app_or_default(app or self.app)
         self.app = app = app_or_default(app or self.app)
         self.hostname = hostname or socket.gethostname()
         self.hostname = hostname or socket.gethostname()
 
 
@@ -97,6 +97,7 @@ class Worker(configurated):
         self.pidfile = pidfile
         self.pidfile = pidfile
         self.autoscale = None
         self.autoscale = None
         self.autoreload = autoreload
         self.autoreload = autoreload
+        self.no_execv = no_execv
         if autoscale:
         if autoscale:
             max_c, _, min_c = autoscale.partition(",")
             max_c, _, min_c = autoscale.partition(",")
             self.autoscale = [int(max_c), min_c and int(min_c) or 0]
             self.autoscale = [int(max_c), min_c and int(min_c) or 0]
@@ -216,6 +217,7 @@ class Worker(configurated):
                                     embed_clockservice=self.embed_clockservice,
                                     embed_clockservice=self.embed_clockservice,
                                     autoscale=self.autoscale,
                                     autoscale=self.autoscale,
                                     autoreload=self.autoreload,
                                     autoreload=self.autoreload,
+                                    no_execv=self.no_execv,
                                     **self.confopts_as_dict())
                                     **self.confopts_as_dict())
         self.install_platform_tweaks(worker)
         self.install_platform_tweaks(worker)
         signals.worker_init.send(sender=worker)
         signals.worker_init.send(sender=worker)

+ 3 - 2
celery/worker/__init__.py

@@ -78,16 +78,17 @@ class Pool(abstract.StartStopComponent):
     name = "worker.pool"
     name = "worker.pool"
     requires = ("queues", )
     requires = ("queues", )
 
 
-    def __init__(self, w, autoscale=None, **kwargs):
+    def __init__(self, w, autoscale=None, no_execv=False, **kwargs):
         w.autoscale = autoscale
         w.autoscale = autoscale
         w.pool = None
         w.pool = None
         w.max_concurrency = None
         w.max_concurrency = None
         w.min_concurrency = w.concurrency
         w.min_concurrency = w.concurrency
+        w.no_execv = no_execv
         if w.autoscale:
         if w.autoscale:
             w.max_concurrency, w.min_concurrency = w.autoscale
             w.max_concurrency, w.min_concurrency = w.autoscale
 
 
     def create(self, w):
     def create(self, w):
-        forking_enable(not w.force_execv)
+        forking_enable(w.no_execv or not w.force_execv)
         pool = w.pool = self.instantiate(w.pool_cls, w.min_concurrency,
         pool = w.pool = self.instantiate(w.pool_cls, w.min_concurrency,
                                 initargs=(w.app, w.hostname),
                                 initargs=(w.app, w.hostname),
                                 maxtasksperchild=w.max_tasks_per_child,
                                 maxtasksperchild=w.max_tasks_per_child,