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

Nicolas Toper ntoper at gmail.com
Fri Jan 20 11:09:09 EST 2012


Hi Tom,

How do you pass data between the parent and its children with
multiprocessing? It worked fine with Twisted in debug but never in prod :(

Best
Nicolas


On Wed, Jan 18, 2012 at 6:39 PM, Tom Sheffler <tom.sheffler at gmail.com>wrote:

> 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
>
>
> _______________________________________________
> Twisted-Python mailing list
> Twisted-Python at twistedmatrix.com
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://twistedmatrix.com/pipermail/twisted-python/attachments/20120120/da519386/attachment-0001.htm 


More information about the Twisted-Python mailing list