I am trying to do multiprocessing programming and the socket work together, but, I'm stuck at this point. The problem is that I get this error:
File "multiprocesssockserv.py", line 11, in worker clientsocket = socket.fromfd(clientfileno, socket.AF_INET, socket.SOCK_STREAM) error: [Errno 9] Bad file descriptor
The full error code is as follows:
import multiprocessing as mp import logging import socket logger = mp.log_to_stderr(logging.WARN) def worker(queue): while True: clientfileno = queue.get() print clientfileno clientsocket = socket.fromfd(clientfileno, socket.AF_INET, socket.SOCK_STREAM) clientsocket.recv() clientsocket.send("Hello World") clientsocket.close() if __name__ == '__main__': num_workers = 5 socket_queue = mp.Queue() workers = [mp.Process(target=worker, args=(socket_queue,)) for i in range(num_workers)] for p in workers: p.daemon = True p.start() serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) serversocket.bind(('',9090)) serversocket.listen(5) while True: client, address = serversocket.accept() socket_queue.put(client.fileno())
edit: I use socket.fromfd because I cannot queue sockets :) I need a way to access the same sockets from different processes. This is the core of my problem.
yasar source share