diff -r 48c70425bf6c -r 351a02310dd8 iro/model/pool.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/iro/model/pool.py Fri Jan 27 21:21:41 2012 +0100 @@ -0,0 +1,25 @@ +from decorator import decorator +from twisted.python.threadpool import ThreadPool +from twisted.internet import threads + +POOL_SIZE=5 #how many threads should the db connector pool should have + +class Data: + def __init__(self): + self.pool = ThreadPool(minthreads=1, maxthreads=POOL_SIZE, name='database') + self.reactor = None + +data = Data() +#a valid dbDefer decorator + +def startPool(reactor): + data.pool.start() + data.reactor = reactor + data.reactor.addSystemEventTrigger('before', 'shutdown', data.pool.stop) + +@decorator +def runInDBPool(f,*args,**kwargs): + """Decorator to run DB queries in Twisted's thread pool""" + return threads.deferToThreadPool(data.reactor, data.pool, f, *args, **kwargs) + +