equal
deleted
inserted
replaced
|
1 from decorator import decorator |
|
2 from twisted.python.threadpool import ThreadPool |
|
3 from twisted.internet import threads |
|
4 |
|
5 POOL_SIZE=5 #how many threads should the db connector pool should have |
|
6 |
|
7 class Data: |
|
8 def __init__(self): |
|
9 self.pool = ThreadPool(minthreads=1, maxthreads=POOL_SIZE, name='database') |
|
10 self.reactor = None |
|
11 |
|
12 data = Data() |
|
13 #a valid dbDefer decorator |
|
14 |
|
15 def startPool(reactor): |
|
16 data.pool.start() |
|
17 data.reactor = reactor |
|
18 data.reactor.addSystemEventTrigger('before', 'shutdown', data.pool.stop) |
|
19 |
|
20 @decorator |
|
21 def runInDBPool(f,*args,**kwargs): |
|
22 """Decorator to run DB queries in Twisted's thread pool""" |
|
23 return threads.deferToThreadPool(data.reactor, data.pool, f, *args, **kwargs) |
|
24 |
|
25 |