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
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
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)
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)