def start(self):
        # start runtime services
        BaseService.start(self)

        self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self._socket.setblocking(0)
        try:
            self._socket.bind(self.addr)
        except socket.error as v:
            self._socket.close()
            raise v
        self._socket.listen(64)

        if self.request_queue is not None:
            # activate server socket
            self.set_socket(self._socket)

        # start workers
        self._start_workers()
        self.running = True
Exemple #2
0
    def start(self):
        # start runtime services
        BaseService.start(self)

        self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self._socket.setblocking(0)
        try:
            self._socket.bind(self.addr)
        except socket.error as v:
            self._socket.close()
            raise v
        self._socket.listen(64)

        if self.request_queue is not None:
            # activate server socket
            self.set_socket(self._socket)

        # start workers
        self._start_workers()
        self.running = True
Exemple #3
0
 def start(self):
     BaseService.start(self)
     self.thread = Thread(name='%s thread' % self.name,
                          target=self.thread_loop)
     self.running = True
     self.thread.start()
        def run(self):
            # start runtime services
            BaseService.start(self)

            # set initial site master
            if self.master is not None:
                from porcupine.db import _db

                rep_mgr = _db.get_replication_manager()
                rep_mgr.master = self.master
                rep_mgr.local_site = self.local

            # start server
            if self.socket is not None:
                socket_map = {}

                # start server
                self.request_queue = queue.Queue(self.worker_threads * 2)
                self.done_queue = None
                server = Dispatcher(self.request_queue, None, socket_map)
                # activate server socket
                server.set_socket(self.socket, socket_map)

                # start asyncore loop
                asyn_thread = Thread(target=self._async_loop, args=(socket_map,), name="%s asyncore thread" % self.name)
                asyn_thread.start()
            else:
                # create queue for inactive RequestHandlerProxy objects
                # i.e. those served
                self.rhproxy_queue = queue.Queue(0)
                # patch shared queues
                self.request_queue = init_queue(*self.request_queue)
                self.done_queue = init_queue(*self.done_queue)

            thread_pool = []
            for i in range(self.worker_threads):
                tname = "%s thread %d" % (self.name, i + 1)
                t = self.thread_class(target=self._thread_loop, name=tname)
                thread_pool.append(t)

            # start management thread
            mt = Thread(target=self._manage, name="%s management thread" % self.name)
            thread_pool.append(mt)

            # start threads
            [t.start() for t in thread_pool]

            try:
                while self.is_alive:
                    time.sleep(8.0)
            except KeyboardInterrupt:
                pass
            except IOError:
                pass

            if self.socket is not None:
                for i in range(self.worker_threads):
                    self.request_queue.put(self.sentinel)

            # join threads
            for t in thread_pool:
                t.join()

            if self.socket is not None:
                # join asyncore thread
                asyncore.close_all(socket_map)
                asyn_thread.join()

            # shutdown runtime services
            BaseService.shutdown(self)
Exemple #5
0
        def run(self):
            # start runtime services
            BaseService.start(self)

            # set initial site master
            if self.master is not None:
                from porcupine.db import _db
                rep_mgr = _db.get_replication_manager()
                rep_mgr.master = self.master
                rep_mgr.local_site = self.local

            # start server
            if self.socket is not None:
                socket_map = {}

                # start server
                self.request_queue = queue.Queue(self.worker_threads * 2)
                self.done_queue = None
                server = Dispatcher(self.request_queue, None, socket_map)
                # activate server socket
                server.set_socket(self.socket, socket_map)

                # start asyncore loop
                asyn_thread = Thread(target=self._async_loop,
                                     args=(socket_map, ),
                                     name='%s asyncore thread' % self.name)
                asyn_thread.start()
            else:
                # create queue for inactive RequestHandlerProxy objects
                # i.e. those served
                self.rhproxy_queue = queue.Queue(0)
                # patch shared queues
                self.request_queue = init_queue(*self.request_queue)
                self.done_queue = init_queue(*self.done_queue)

            thread_pool = []
            for i in range(self.worker_threads):
                tname = '%s thread %d' % (self.name, i + 1)
                t = self.thread_class(target=self._thread_loop, name=tname)
                thread_pool.append(t)

            # start management thread
            mt = Thread(target=self._manage,
                        name='%s management thread' % self.name)
            thread_pool.append(mt)

            # start threads
            [t.start() for t in thread_pool]

            try:
                while self.is_alive:
                    time.sleep(8.0)
            except KeyboardInterrupt:
                pass
            except IOError:
                pass

            if self.socket is not None:
                for i in range(self.worker_threads):
                    self.request_queue.put(self.sentinel)

            # join threads
            for t in thread_pool:
                t.join()

            if self.socket is not None:
                # join asyncore thread
                asyncore.close_all(socket_map)
                asyn_thread.join()

            # shutdown runtime services
            BaseService.shutdown(self)