[Twisted-Python] Python multiprocessing and Twisted stopService - success story

Tom Sheffler tom.sheffler at gmail.com
Wed Jan 18 10:39:41 MST 2012


We are using Py2.6's multiprocessing with Twisted and things are working
nicely.  I thought I'd pass on something that seems to work pretty well.
 Comments welcome.

I am using multiprocessing to spawn long-running worker processes as
children of Twisted.  When Twisted is killed, I want the children to be
unceremoniously killed as well.  I looked into signal handlers, but
creating a service that kills the child processes ended up being simpler
and is working well with twistd daemonization.

class MultiprocessingStopService(Service):

    def stopService(self):
        import multiprocessing
        for p in multiprocessing.active_children():
            p.terminate()
        Service.stopService(self)

and in my main service maker:

        s = MultiService()
    stopper  = MultiprocessingStopService()
    stopper.setServiceParent(s)

Perhaps this will be helpful to someone.

-T
-------------- next part --------------
An HTML attachment was scrubbed...
URL: </pipermail/twisted-python/attachments/20120118/7dc82331/attachment-0001.html>


More information about the Twisted-Python mailing list