[Twisted-Python] stopping MultiService child services

Jean-Paul Calderone exarkun at divmod.com
Sat Dec 8 12:09:23 EST 2007


On Sat, 8 Dec 2007 08:52:36 -0800, Don Smith <donwsmith at gmail.com> wrote:
>Hi all,
>
>I'm still a bit of a novice but I'm trying to implement MultiService. The
>trick is that I want my program to be able to change it's config while it is
>running. Once the app realizes it has a new configuration it needs to stop
>all services, load the new config and start services accordingly. However,
>I'm stuck right now with how to stop all services. I'm thinking I need to
>loop over the children of MultiService and call stopService on them, but I'm
>not sure how to do that. Or should I just call stopServivce on the
>MultiService object?

MultiService.stopService will call stopService on all of its child services,
so if the goal is to do that, then a for loop is more work for the same
result.

When you call stopService, keep in mind that it can return a Deferred which
you'll probably want to wait for before trying to start anything again.

Likewise for startup, you can just call MultiService.startService to start
all of its children.

It might also be useful to know that removing a service from a running
MultiService will stop the service and adding a service to a running
MultiService will start it.

Jean-Paul




More information about the Twisted-Python mailing list