Browse Source

Change default mask

Ask Solem 10 years ago
parent
commit
7ae69fb1d9
4 changed files with 10 additions and 7 deletions
  1. 1 1
      celery/app/base.py
  2. 3 2
      celery/bin/base.py
  3. 1 1
      celery/bin/celeryd_detach.py
  4. 5 3
      celery/platforms.py

+ 1 - 1
celery/app/base.py

@@ -30,7 +30,7 @@ from celery._state import (
     _announce_app_finalized,
 )
 from celery.exceptions import AlwaysEagerIgnored, ImproperlyConfigured
-from celery.five import items, values
+from celery.five import values
 from celery.loaders import get_loader_cls
 from celery.local import PromiseProxy, maybe_evaluate
 from celery.utils import gen_task_name

+ 3 - 2
celery/bin/base.py

@@ -56,7 +56,8 @@ in any command that also has a `--detach` option.
 
 .. cmdoption:: --umask
 
-    Effective umask of the process after detaching. Default is 0.
+    Effective umask (in octal) of the process after detaching.  Inherits
+    the umask of the parent process by default.
 
 .. cmdoption:: --workdir
 
@@ -649,5 +650,5 @@ def daemon_options(default_pidfile=None, default_logfile=None):
         Option('--pidfile', default=default_pidfile),
         Option('--uid', default=None),
         Option('--gid', default=None),
-        Option('--umask', default=0, type='int'),
+        Option('--umask', default=None),
     )

+ 1 - 1
celery/bin/celeryd_detach.py

@@ -38,7 +38,7 @@ OPTION_LIST = daemon_options(default_pidfile='celeryd.pid') + (
 
 
 def detach(path, argv, logfile=None, pidfile=None, uid=None,
-           gid=None, umask=0, working_directory=None, fake=False, app=None):
+           gid=None, umask=None, working_directory=None, fake=False, app=None):
     fake = 1 if C_FAKEFORK else fake
     with detached(logfile, pidfile, uid, gid, umask, working_directory, fake,
                   after_forkers=False):

+ 5 - 3
celery/platforms.py

@@ -56,7 +56,6 @@ SYSTEM = _platform.system()
 IS_OSX = SYSTEM == 'Darwin'
 IS_WINDOWS = SYSTEM == 'Windows'
 
-DAEMON_UMASK = 0
 DAEMON_WORKDIR = '/'
 
 PIDFILE_FLAGS = os.O_CREAT | os.O_EXCL | os.O_WRONLY
@@ -296,8 +295,10 @@ class DaemonContext(object):
     def __init__(self, pidfile=None, workdir=None, umask=None,
                  fake=False, after_chdir=None, after_forkers=True,
                  **kwargs):
+        if isinstance(umask, string_t):
+            umask = int(umask, 8)  # convert str -> octal
         self.workdir = workdir or DAEMON_WORKDIR
-        self.umask = DAEMON_UMASK if umask is None else umask
+        self.umask = umask
         self.fake = fake
         self.after_chdir = after_chdir
         self.after_forkers = after_forkers
@@ -314,7 +315,8 @@ class DaemonContext(object):
                 self._detach()
 
             os.chdir(self.workdir)
-            os.umask(self.umask)
+            if self.umask is not None:
+                os.umask(self.umask)
 
             if self.after_chdir:
                 self.after_chdir()