def __init__(self, start_server_ip="127.0.0.1", start_server_port=5000, num_server_workers=8): self.start_server_ip = start_server_ip self.start_server_port = start_server_port self.num_server_workers = num_server_workers self.listen_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.listen_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.listen_sock.bind((start_server_ip, start_server_port)) self.listen_sock.setblocking(0) self.listen_sock.settimeout(1) self.address = self.listen_sock.getsockname() self.worker_procs = [] self.worker_queues = [] for i in range(num_server_workers): # Create a pair of (inQ,outQ) for IPC with the worker worker_in_q = multiprocessing.Queue() worker_out_q = multiprocessing.Queue() self.worker_queues.append((worker_in_q, worker_out_q)) # Create the worker process object worker_proc = ServerWorker("SW." + str(i + 1), worker_in_q, worker_out_q) worker_proc.daemon = True self.worker_procs.append(worker_proc) # Start the worker process worker_proc.start() # By now the server workers have been spawned # Setup the default Pyev loop in the master self.loop = pyev.default_loop(flags=pyev.recommended_backends()) # Prepare signal , out Q and connection watchers self.sig_watchers = [pyev.Signal(sig, self.loop, self.signal_cb) for sig in STOPSIGNALS] self.q_watchers = [ pyev.Io( fd=worker.out_q._reader.fileno(), events=pyev.EV_READ, loop=self.loop, callback=self.out_q_cb, data=worker, ) for worker in self.worker_procs ] self.socket_watchers = [ pyev.Io(fd=self.listen_sock.fileno(), events=pyev.EV_READ, loop=self.loop, callback=self.io_cb) ] self.next_worker = 0
def __init__(self, start_server_ip="127.0.0.1", start_server_port=5000, num_server_workers=1): self.start_server_ip = start_server_ip self.start_server_port = start_server_port self.num_server_workers = num_server_workers self.listen_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.listen_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.listen_sock.bind((start_server_ip,start_server_port)) self.listen_sock.setblocking(0) self.listen_sock.settimeout(1) self.address = self.listen_sock.getsockname() self.worker_procs = [] self.worker_queues = [] for i in range(num_server_workers): # Create a pair of (inQ,outQ) for IPC with the worker worker_in_q = multiprocessing.Queue() worker_out_q = multiprocessing.Queue() self.worker_queues.append((worker_in_q,worker_out_q)) # Create the worker process object worker_proc = ServerWorker("SW."+str(i+1), worker_in_q, worker_out_q, ) worker_proc.daemon = True self.worker_procs.append(worker_proc) # Start the worker process worker_proc.start() # By now the server workers have been spawned # Setup the default Pyev loop in the master self.loop = pyev.default_loop(flags=pyev.recommended_backends()) # Prepare signal , out Q and connection watchers self.sig_watchers = [pyev.Signal(sig, self.loop, self.signal_cb) for sig in STOPSIGNALS] self.q_watchers = [pyev.Io(fd=worker.out_q._reader.fileno(), events=pyev.EV_READ, loop=self.loop, callback=self.out_q_cb, data=worker) for worker in self.worker_procs] self.socket_watchers = [pyev.Io(fd=self.listen_sock.fileno(), events=pyev.EV_READ, loop=self.loop, callback=self.io_cb)] self.next_worker = 0
def __init__(self, name, in_q, out_q): multiprocessing.Process.__init__(self, group=None, name=name) self.in_q = in_q self.out_q = out_q self.loop = pyev.Loop(flags=pyev.recommended_backends()) self.watchers = [] self.client_count = 0 self.in_q_fd = self.in_q._reader.fileno() self.watchers.append(pyev.Io(self.in_q_fd, pyev.EV_READ, self.loop, self.in_q_cb)) self.cnxns = {} logging.debug("ServerWorker[{0}:{1}]: Instantiated.".format(os.getpid(), self.name))
def __init__(self,name,in_q,out_q): multiprocessing.Process.__init__(self,group=None,name=name) self.in_q = in_q self.out_q = out_q self.loop = pyev.Loop(flags=pyev.recommended_backends()) self.watchers = [] self.client_count = 0 self.in_q_fd = self.in_q._reader.fileno() self.watchers.append(pyev.Io(self.in_q_fd, pyev.EV_READ, self.loop, self.in_q_cb)) self.cnxns = {} logging.debug("ServerWorker[{0}:{1}]: Instantiated.".format(os.getpid(),self.name))