Multitraitement et des prises en Python

Je suis en train de faire le multitraitement et la programmation socket travailler ensemble, mais, je suis coincé à ce point. Le problème est que, j'obtiens cette erreur:

  File "multiprocesssockserv.py", line 11, in worker
    clientsocket = socket.fromfd(clientfileno, socket.AF_INET, socket.SOCK_STREAM)
error: [Errno 9] Bad file descriptor

Code complet que l'origine de l'erreur est le suivant:

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: je suis à l'aide d'une douille.fromfd parce que je ne peux pas mettre les douilles dans une file d'attente 🙂 j'ai besoin d'un moyen d'accéder aux mêmes prises à partir de différents processus en quelque sorte. C'est le coeur de mon problème.

Quelle plate-forme?
Désolé, j'ai oublié de mentionner que 🙂 plate-forme Linux.

OriginalL'auteur yasar | 2011-12-17