Example #1
0
    def __init__(self, name, cmd, args=None, numprocesses=1, warmup_delay=0.,
                 working_dir=None, shell=False, uid=None,
                 gid=None, send_hup=False, env=None, stopped=True,
                 flapping_attempts=2, flapping_window=1., retry_in=7.,
                 max_retry=5,
                 graceful_timeout=30., prereload_fn=None,
                 rlimits=None, executable=None, stdout_stream=None,
                 stderr_stream=None, stream_backend='thread'):
        self.name = name
        self.res_name = name.lower().replace(" ", "_")
        self.numprocesses = int(numprocesses)
        self.warmup_delay = warmup_delay
        self.cmd = cmd
        self.args = args
        self._process_counter = 0
        self.stopped = stopped
        self.flapping_attempts = flapping_attempts
        self.flapping_window = flapping_window
        self.retry_in = retry_in
        self.max_retry = max_retry
        self.graceful_timeout = 30
        self.prereload_fn = prereload_fn
        self.executable = None
        self.stream_backend = stream_backend

        self.stdout_stream = stdout_stream
        if stdout_stream:
            self.stdout_redirector = get_pipe_redirector(stdout_stream,
                    backend=stream_backend)
        else:
            self.stdout_redirector = None

        self.stderr_stream = stderr_stream
        if stderr_stream:
            self.stderr_redirector = get_pipe_redirector(stderr_stream,
                    backend=stream_backend)
        else:
            self.stderr_redirector = None

        self.optnames = ("numprocesses", "warmup_delay", "working_dir",
                         "uid", "gid", "send_hup", "shell", "env",
                         "cmd", "flapping_attempts", "flapping_window",
                         "retry_in", "args",
                         "max_retry", "graceful_timeout", "executable")

        if not working_dir:
            # working dir hasn't been set
            working_dir = util.get_working_dir()

        self.working_dir = working_dir
        self.processes = {}
        self.shell = shell
        self.uid = uid
        self.gid = gid
        self.env = env
        self.rlimits = rlimits
        self.send_hup = send_hup
        self.evpub_socket = None
Example #2
0
    def _create_redirectors(self):
        if self.stdout_stream:
            if self.stdout_redirector is not None:
                self.stdout_redirector.stop()
            self.stdout_redirector = get_pipe_redirector(self.stdout_stream, loop=self.loop)
        else:
            self.stdout_redirector = None

        if self.stderr_stream:
            if self.stderr_redirector is not None:
                self.stderr_redirector.stop()
            self.stderr_redirector = get_pipe_redirector(self.stderr_stream, loop=self.loop)
        else:
            self.stderr_redirector = None
Example #3
0
    def _create_redirectors(self):
        if self.stdout_stream:
            if self.stdout_redirector is not None:
                self.stdout_redirector.stop()
            self.stdout_redirector = get_pipe_redirector(self.stdout_stream,
                                                         loop=self.loop)
        else:
            self.stdout_redirector = None

        if self.stderr_stream:
            if self.stderr_redirector is not None:
                self.stderr_redirector.stop()
            self.stderr_redirector = get_pipe_redirector(self.stderr_stream,
                                                         loop=self.loop)
        else:
            self.stderr_redirector = None
Example #4
0
    def _create_redirectors(self):
        if self.stdout_stream:
            if self.stdout_redirector is not None and self.stdout_redirector.running:
                self.stdout_redirector.kill()

            self.stdout_redirector = get_pipe_redirector(self.stdout_stream, backend=self.stream_backend)
        else:
            self.stdout_redirector = None

        if self.stderr_stream:
            if self.stderr_redirector is not None and self.stderr_redirector.running:
                self.stderr_redirector.kill()

            self.stderr_redirector = get_pipe_redirector(self.stderr_stream, backend=self.stream_backend)
        else:
            self.stderr_redirector = None
Example #5
0
    def _create_redirectors(self):
        if self.stdout_stream:
            if (self.stdout_redirector is not None and
                    self.stdout_redirector.running):
                self.stdout_redirector.kill()
            self.stdout_redirector = get_pipe_redirector(
                self.stdout_stream, loop=self.loop)
        else:
            self.stdout_redirector = None

        if self.stderr_stream:
            if (self.stderr_redirector is not None and
                    self.stderr_redirector.running):
                self.stderr_redirector.kill()

            self.stderr_redirector = get_pipe_redirector(
                self.stderr_stream, loop=self.loop)
        else:
            self.stderr_redirector = None
Example #6
0
    def _create_redirectors(self):
        if self.stdout_stream:
            if (self.stdout_redirector is not None
                    and self.stdout_redirector.running):
                self.stdout_redirector.kill()
            self.stdout_redirector = get_pipe_redirector(
                self.stdout_stream, backend=self.stream_backend)
        else:
            self.stdout_redirector = None

        if self.stderr_stream:
            if (self.stderr_redirector is not None
                    and self.stderr_redirector.running):
                self.stderr_redirector.kill()

            self.stderr_redirector = get_pipe_redirector(
                self.stderr_stream, backend=self.stream_backend)
        else:
            self.stderr_redirector = None
Example #7
0
    def _reload_stream(self, key, val):
        parts = key.split('.', 1)

        action = 0
        if parts[0] == 'stdout_stream':
            old_stream = self.stdout_stream
            self.stdout_stream_conf[parts[1]] = val
            self.stdout_stream = get_stream(self.stdout_stream_conf,
                                            reload=True)
            if self.stdout_redirector:
                self.stdout_redirector.redirect = self.stdout_stream['stream']
            else:
                self.stdout_redirector = get_pipe_redirector(
                    self.stdout_stream, loop=self.loop)
                self.stdout_redirector.start()
                action = 1

            if old_stream and hasattr(old_stream['stream'], 'close'):
                old_stream['stream'].close()
        else:
            old_stream = self.stderr_stream
            self.stderr_stream_conf[parts[1]] = val
            self.stderr_stream = get_stream(self.stderr_stream_conf,
                                            reload=True)
            if self.stderr_redirector:
                self.stderr_redirector.redirect = self.stderr_stream['stream']
            else:
                self.stderr_redirector = get_pipe_redirector(
                    self.stderr_stream, loop=self.loop)
                self.stderr_redirector.start()
                action = 1

            if old_stream and hasattr(old_stream['stream'], 'close'):
                old_stream['stream'].close()

        return action
Example #8
0
    def _reload_stream(self, key, val):
        parts = key.split('.', 1)

        action = 0
        if parts[0] == 'stdout_stream':
            old_stream = self.stdout_stream
            self.stdout_stream_conf[parts[1]] = val
            self.stdout_stream = get_stream(self.stdout_stream_conf,
                                            reload=True)
            if self.stdout_redirector:
                self.stdout_redirector.redirect = self.stdout_stream['stream']
            else:
                self.stdout_redirector = get_pipe_redirector(
                    self.stdout_stream, loop=self.loop)
                self.stdout_redirector.start()
                action = 1

            if old_stream and hasattr(old_stream['stream'], 'close'):
                old_stream['stream'].close()
        else:
            old_stream = self.stderr_stream
            self.stderr_stream_conf[parts[1]] = val
            self.stderr_stream = get_stream(self.stderr_stream_conf,
                                            reload=True)
            if self.stderr_redirector:
                self.stderr_redirector.redirect = self.stderr_stream['stream']
            else:
                self.stderr_redirector = get_pipe_redirector(
                    self.stderr_stream, loop=self.loop)
                self.stderr_redirector.start()
                action = 1

            if old_stream and hasattr(old_stream['stream'], 'close'):
                old_stream['stream'].close()

        return action
Example #9
0
    def __init__(self, name, cmd, args=None, numprocesses=1, warmup_delay=0.,
                 working_dir=None, shell=False, uid=None,
                 gid=None, send_hup=False, env=None, stopped=True,
                 flapping_attempts=2, flapping_window=1., retry_in=7.,
                 max_retry=5,
                 graceful_timeout=30., prereload_fn=None,
                 rlimits=None, executable=None, stdout_stream=None,
                 stderr_stream=None, stream_backend='thread', priority=0):
        self.name = name
        self.res_name = name.lower().replace(" ", "_")
        self.numprocesses = int(numprocesses)
        self.warmup_delay = warmup_delay
        self.cmd = cmd
        self.args = args
        self._process_counter = 0
        self.stopped = stopped
        self.flapping_attempts = flapping_attempts
        self.flapping_window = flapping_window
        self.retry_in = retry_in
        self.max_retry = max_retry
        self.graceful_timeout = 30
        self.prereload_fn = prereload_fn
        self.executable = None
        self.stream_backend = stream_backend
        self.priority = priority

        self.stdout_stream = stdout_stream
        if stdout_stream:
            self.stdout_redirector = get_pipe_redirector(stdout_stream,
                    backend=stream_backend)
        else:
            self.stdout_redirector = None

        self.stderr_stream = stderr_stream
        if stderr_stream:
            self.stderr_redirector = get_pipe_redirector(stderr_stream,
                    backend=stream_backend)
        else:
            self.stderr_redirector = None

        self.optnames = ("numprocesses", "warmup_delay", "working_dir",
                         "uid", "gid", "send_hup", "shell", "env",
                         "cmd", "flapping_attempts", "flapping_window",
                         "retry_in", "args",
                         "max_retry", "graceful_timeout", "executable",
                         "priority")

        if not working_dir:
            # working dir hasn't been set
            working_dir = util.get_working_dir()

        self.working_dir = working_dir
        self.pids = {}
        self.processes = {}
        self.shell = shell
        self.uid = uid
        self.gid = gid
        self.env = env
        self.rlimits = rlimits
        self.send_hup = send_hup
        self.evpub_socket = None