浏览代码

add option to disable stdout/stderr redirection for shell provider

bigeagle 10 年之前
父节点
当前提交
caac9b4950
共有 2 个文件被更改,包括 10 次插入3 次删除
  1. 1 0
      tunasync/mirror_config.py
  2. 9 3
      tunasync/mirror_provider.py

+ 1 - 0
tunasync/mirror_config.py

@@ -81,6 +81,7 @@ class MirrorConfig(object):
                 local_dir=self.local_dir,
                 log_dir=self.log_dir,
                 log_file=self.log_file,
+                log_stdout=self.options.get("log_stdout", True),
                 interval=self.interval,
                 hooks=hooks
             )

+ 9 - 3
tunasync/mirror_provider.py

@@ -106,12 +106,13 @@ class RsyncProvider(MirrorProvider):
 class ShellProvider(MirrorProvider):
 
     def __init__(self, name, command, upstream_url, local_dir, log_dir,
-                 log_file="/dev/null", interval=120, hooks=[]):
+                 log_file="/dev/null", log_stdout=True, interval=120, hooks=[]):
 
         super(ShellProvider, self).__init__(name, local_dir, log_dir, log_file,
                                             interval, hooks)
         self.upstream_url = str(upstream_url)
         self.command = shlex.split(command)
+        self.log_stdout = log_stdout
 
     def run(self, ctx={}):
 
@@ -128,8 +129,13 @@ class ShellProvider(MirrorProvider):
         _args = [] if len(self.command) == 1 else self.command[1:]
 
         cmd = sh.Command(_cmd)
-        self.p = cmd(*_args, _env=new_env, _out=log_file,
-                     _err=log_file, _out_bufsize=1, _bg=True)
+
+        if self.log_stdout:
+            self.p = cmd(*_args, _env=new_env, _out=log_file,
+                         _err=log_file, _out_bufsize=1, _bg=True)
+        else:
+            self.p = cmd(*_args, _env=new_env, _out='/dev/null',
+                         _err='/dev/null', _out_bufsize=1, _bg=True)
 
 
 # vim: ts=4 sw=4 sts=4 expandtab