[Twisted-Python] dropin.cache?

Phil Christensen phil at bubblehouse.org
Tue Jul 10 14:00:01 MDT 2007


So, I've been making great strides with my plugin system, using  
twisted's plugin support, but there's just one small issue I'm having  
that I can't seem to figure out.

Traceback (most recent call last):
   File "/Users/phil/Workspace/modu/modu/web/wsgi.py", line 16, in  
handler
     application = app.get_application(env)
   File "/Users/phil/Workspace/modu/modu/web/app.py", line 34, in  
get_application
     _load_plugins(env)
   File "/Users/phil/Workspace/modu/modu/web/app.py", line 53, in  
_load_plugins
     for site_plugin in plugin.getPlugins(ISite, modu.plugins):
   File "/Users/phil/Workspace/Twisted/twisted/plugin.py", line 186,  
in getPlugins
     allDropins = getCache(package)
--- <exception caught here> ---
   File "/Users/phil/Workspace/Twisted/twisted/plugin.py", line 165,  
in getCache
     dropinPath.setContent(pickle.dumps(dropinDotCache))
   File "/Users/phil/Workspace/Twisted/twisted/python/filepath.py",  
line 525, in setContent
     sib.open('w').write(content)
   File "/Users/phil/Workspace/Twisted/twisted/python/filepath.py",  
line 369, in open
     return open(self.path, mode+'b')
exceptions.IOError: [Errno 13] Permission denied: '/Users/phil/ 
Workspace/modu/examples/basic/modu/plugins/dropin.cache.new'


The issue is that my app doesn't have write access to the various  
plugin directories by default, as it runs as a restricted user. This  
is basically a configuration detail that my users will have to take  
care of, but I'd like to  be able to catch this error and provide a  
nicer message, or at least not have my logfile filled up with stack  
traces.

The problem is that putting a try/catch around getPlugins doesn't  
work, or doesn't appear to. I've looked at the code in getPlugins,  
and I can't figure out why the exception isn't being caught. Since  
I'm not actually using the reactor, I would assume there's no  
deferred trickery that needs to be done, so I'm at a bit of a loss.

Any help in this matter would be appreciated...

-phil




More information about the Twisted-Python mailing list