[Twisted-Python] Plugin startup and shutdown actions

Jean-Paul Calderone exarkun at divmod.com
Sat Apr 11 13:42:31 EDT 2009


On Sat, 11 Apr 2009 19:29:28 +0200, luper rouch <luper.rouch at gmail.com> wrote:
>2009/4/11 Jean-Paul Calderone <exarkun at divmod.com>:
>> On Sat, 11 Apr 2009 00:24:37 +0200, luper rouch <luper.rouch at gmail.com>
>> wrote:
>>>
>>> I would like to port my Application API based services to the twistd
>>> plugin interface, to be able to retrieve command line options.
>>>
>>> In the existing services, I reimplemented t.a.s.MultiService
>>> startService() and stopService() to do some actions at startup and
>>> shutdown.
>>>
>>> How can I do this in a plugin ?
>>>
>>
>> The top-level API for plugins is mostly a function that returns an IService
>> provider.  So if you have your own version of MultiService, you can just
>> return an instance of that, just like the one you were creating in your .tac
>> file, from a makeService function which is registered as a plugin of the
>> suitable type.
>>
>Thanks I didn't think it was so simple !
>
>I have a last question, I put my plugins in a 'twisted/plugins'
>subfolder of my project, and running them from the command line works
>fine. How can I invoke them in unit tests (I need to be able to start
>and stop them), since the plugin files are not in a package ?

They can be imported from "twisted.plugins".  For example, if you name your
"dropin" file foo_plugins.py, then "from twisted.plugins import foo_plugins"
should work and let you test any code that is part of your plugin definitions.
Note that you should try to keep the amount of code and dependencies in a
dropin file to a minimum, since this must all be loaded and executed whenever
a search for any plugin is performed.

Jean-Paul




More information about the Twisted-Python mailing list