On Sat, 11 Apr 2009 19:29:28 +0200, luper rouch <luper.ro...@gmail.com> wrote:
2009/4/11 Jean-Paul Calderone <exar...@divmod.com>:
On Sat, 11 Apr 2009 00:24:37 +0200, luper rouch <luper.ro...@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
_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python