예제 #1
0
파일: arbiter.py 프로젝트: cyberj/pulsar
 def on_start(self):
     if current_process().daemon:
         raise pulsar.PulsarException(
                 'Cannot create the arbiter in a daemon process')
     os.environ["SERVER_SOFTWARE"] = pulsar.SERVER_SOFTWARE
     pidfile = self.cfg.pidfile
     if pidfile is not None:
         p = Pidfile(pidfile)
         p.create(self.pid)
         self.pidfile = p
     PoolMixin.on_start(self)
예제 #2
0
 def _start_arbiter(self, actor, exc=None):
     if not os.environ.get('SERVER_SOFTWARE'):
         os.environ["SERVER_SOFTWARE"] = pulsar.SERVER_SOFTWARE
     pid_file = actor.cfg.pid_file
     if pid_file is not None:
         actor.logger.info('Create pid file %s', pid_file)
         try:
             p = Pidfile(pid_file)
             p.create(actor.pid)
         except RuntimeError as e:
             raise HaltServer('ERROR. %s' % str(e), exit_code=2)
         self.pid_file = p
예제 #3
0
def start_arbiter(self, exc=None):
    if current_process().daemon:
        raise HaltServer('Cannot create the arbiter in a daemon process')
    os.environ["SERVER_SOFTWARE"] = pulsar.SERVER_SOFTWARE
    pidfile = self.cfg.pidfile
    if pidfile is not None:
        try:
            p = Pidfile(pidfile)
            p.create(self.pid)
        except RuntimeError as e:
            raise HaltServer('ERROR. %s' % str(e), exit_code=3)
        self.pidfile = p
예제 #4
0
 def _start_arbiter(self, actor, exc=None):
     if not os.environ.get('SERVER_SOFTWARE'):
         os.environ["SERVER_SOFTWARE"] = pulsar.SERVER_SOFTWARE
     pid_file = actor.cfg.pid_file
     if pid_file is not None:
         actor.logger.info('Create pid file %s', pid_file)
         try:
             p = Pidfile(pid_file)
             p.create(actor.pid)
         except RuntimeError as e:
             raise HaltServer('ERROR. %s' % str(e), exit_code=2)
         self.pid_file = p
예제 #5
0
def start_arbiter(self):
    if current_process().daemon:
        raise pulsar.PulsarException(
            'Cannot create the arbiter in a daemon process')
    os.environ["SERVER_SOFTWARE"] = pulsar.SERVER_SOFTWARE
    pidfile = self.cfg.pidfile
    if pidfile is not None:
        try:
            p = Pidfile(pidfile)
            p.create(self.pid)
        except RuntimeError as e:
            raise HaltServer('ERROR. %s' % str(e), exit_code=3)
        self.pidfile = p
    return self
예제 #6
0
    def run(self, options, **params):
        app = self.app
        pid_file = options.pid_file
        if pid_file:
            if os.path.isfile(pid_file):
                pid = Pidfile(pid_file).read()
                if not pid:
                    raise CommandError('No pid in pid file %s' % pid_file)
            else:
                raise CommandError('Could not located pid file %s' % pid_file)
        else:
            raise CommandError('Pid file not available')

        try:
            self.kill(pid, signal.SIGTERM)
        except ProcessLookupError:
            raise CommandError('Process %d does not exist' % pid) from None

        start = time.time()
        while time.time() - start < options.timeout:
            if os.path.isfile(pid_file):
                time.sleep(0.2)
            else:
                app.write('Process %d terminated' % pid)
                return 0

        app.write_err('Could not terminate process after %d seconds' %
                      options.timeout)
        self.kill(pid, signal.SIGKILL)
        app.write_err('Processed %d killed' % pid)
        return 1
예제 #7
0
 def test_stale_pid(self):
     p = Pidfile()
     p.create(798797)
     self.assertTrue(p.fname)
     self.assertEqual(p.pid, 798797)
     self.assertFalse(p.exists)
     #
     # Now create again with different pid
     p.create(798798)
     self.assertEqual(p.pid, 798798)
     self.assertFalse(p.exists)
     p.unlink()
예제 #8
0
 def test_stale_pid(self):
     p = Pidfile()
     p.create(798797)
     self.assertTrue(p.fname)
     self.assertEqual(p.pid, 798797)
     self.assertFalse(p.exists)
     #
     # Now create again with different pid
     p.create(798798)
     self.assertEqual(p.pid, 798798)
     self.assertFalse(p.exists)
     p.unlink()
예제 #9
0
파일: pid.py 프로젝트: Danzeer/pulsar
 def test_create_pid(self):
     proxy = yield from self.spawn_actor(name='pippo')
     info = yield from send(proxy, 'info')
     result = info['actor']
     self.assertTrue(result['is_process'])
     pid = result['process_id']
     #
     p = Pidfile()
     self.assertEqual(p.fname, None)
     self.assertEqual(p.pid, None)
     p.create(pid)
     self.assertTrue(p.fname)
     self.assertEqual(p.pid, pid)
     p1 = Pidfile(p.fname)
     self.assertRaises(RuntimeError, p1.create, p.pid+1)
     #
     p1 = Pidfile('bla/ksdcskcbnskcdbskcbksdjcb')
     self.assertRaises(RuntimeError, p1.create, p.pid+1)
     p1.unlink()
     p.unlink()
     self.assertFalse(os.path.exists(p.fname))
예제 #10
0
 async def test_create_pid(self):
     proxy = await self.spawn_actor(name="pippo")
     info = await send(proxy, "info")
     result = info["actor"]
     self.assertTrue(result["is_process"])
     pid = result["process_id"]
     #
     p = Pidfile()
     self.assertEqual(p.fname, None)
     self.assertEqual(p.pid, None)
     p.create(pid)
     self.assertTrue(p.fname)
     self.assertEqual(p.pid, pid)
     self.assertTrue(p.exists)
     #
     p1 = Pidfile(p.fname)
     self.assertRaises(RuntimeError, p1.create, p.pid + 1)
     #
     p1 = Pidfile("bla/ksdcskcbnskcdbskcbksdjcb")
     self.assertRaises(RuntimeError, p1.create, p.pid + 1)
     p1.unlink()
     p.unlink()
     self.assertFalse(os.path.exists(p.fname))
예제 #11
0
 async def test_create_pid(self):
     proxy = await self.spawn_actor(name='pippo')
     info = await send(proxy, 'info')
     result = info['actor']
     self.assertTrue(result['is_process'])
     pid = result['process_id']
     #
     p = Pidfile()
     self.assertEqual(p.fname, None)
     self.assertEqual(p.pid, None)
     p.create(pid)
     self.assertTrue(p.fname)
     self.assertEqual(p.pid, pid)
     self.assertTrue(p.exists)
     #
     p1 = Pidfile(p.fname)
     self.assertRaises(RuntimeError, p1.create, p.pid + 1)
     #
     p1 = Pidfile('bla/ksdcskcbnskcdbskcbksdjcb')
     self.assertRaises(RuntimeError, p1.create, p.pid + 1)
     p1.unlink()
     p.unlink()
     self.assertFalse(os.path.exists(p.fname))