I have a Python multiprocessing application where a master process starts server sub-processes and communicates with them via Pipes; that works very well. But one of the subprocesses, in turn, starts a collection of HTTPServer 'workers' (almost exactly as demonstrated in the docs). This works perfectly.... so long as the subprocess that starts the HTTPServer workers is the *first* process started by the master process. Otherwise the HTTPServer's serve_forever immediately abends with: "(9, 'Bad file descriptor')"
I'm confused why the order of starting the processes matter, especially given that the HTTPServer's are start in a subprocess of a subprocess. The master doesn't do much of anything between starting each subprocess (which it does in a loop; identify all the subprocesses to start, and start them.). subprocess -------------------- ...... self._httpd = HTTPServer((HTTP_HOST, HTTP_PORT), HTTPRequestHandler) print 'HTTPServer created.' for i in range(10): p = multiprocessing.Process(target=serve_forever, args=(self._httpd, i, self)) self._workers.append(p) p.start() ..... def serve_forever(server, i, control): print 'coils.http starting HTTP worker #{0}'.format(i) try: server.serve_forever() except KeyboardInterrupt: pass except Exception, e: control.log.exception(e) print 'coils.http worker #{0} abended with exception.'.format(i) print e return -- OpenGroupware developer: awill...@whitemice.org <http://whitemiceconsulting.blogspot.com/> OpenGroupare & Cyrus IMAPd documenation @ <http://docs.opengroupware.org/Members/whitemice/wmogag/file_view> -- http://mail.python.org/mailman/listinfo/python-list