示例#1
0
class Services(object):

    def __init__(self):
        self.services = []
        self.tg = ThreadGroup()
        # signal that the service is done shutting itself down:
        self.done = event.Event()

    def add(self, service):
        self.services.append(service)
        self.tg.add_thread(self.run_service, service, self.done)

    def stop(self):
        for service in self.services:
            service.stop()
            service.wait()

        if not self.done.ready():
            self.done.send()

        self.tg.stop()

    def wait(self):
        self.tg.wait()

    def restart(self):
        self.stop()
        self.done = event.Event()
        for restart_service in self.services:
            restart_service.reset()
            self.tg.add_thread(self.run_service, restart_service, self.done)

    @staticmethod
    def run_service(service, done):
        """Service start wrapper.
        :param service: service to run
        :param done: event to wait on until a shutdown is triggered
        :returns: None

        """
        service.start()
        done.wait()
示例#2
0
文件: wsgi.py 项目: MegaByte875/alies
class Services(object):
    def __init__(self):
        self.services = []
        self.tg = ThreadGroup()
        # signal that the service is done shutting itself down:
        self.done = event.Event()

    def add(self, service):
        self.services.append(service)
        self.tg.add_thread(self.run_service, service, self.done)

    def stop(self):
        for service in self.services:
            service.stop()
            service.wait()

        if not self.done.ready():
            self.done.send()

        self.tg.stop()

    def wait(self):
        self.tg.wait()

    def restart(self):
        self.stop()
        self.done = event.Event()
        for restart_service in self.services:
            restart_service.reset()
            self.tg.add_thread(self.run_service, restart_service, self.done)

    @staticmethod
    def run_service(service, done):
        """Service start wrapper.
        :param service: service to run
        :param done: event to wait on until a shutdown is triggered
        :returns: None

        """
        service.start()
        done.wait()
示例#3
0
文件: wsgi.py 项目: MegaByte875/alies
 def __init__(self):
     self.services = []
     self.tg = ThreadGroup()
     # signal that the service is done shutting itself down:
     self.done = event.Event()
示例#4
0
 def __init__(self):
     self.services = []
     self.tg = ThreadGroup()
     # signal that the service is done shutting itself down:
     self.done = event.Event()