| author | Sandro Knauß <knauss@netzguerilla.net> |
| Sun, 25 Mar 2012 20:14:35 +0200 | |
| branch | devel |
| changeset 253 | e8d56537c9cc |
| parent 141 | 90c95fdd1e33 |
| child 264 | 584b9c97ecfd |
| permissions | -rw-r--r-- |
|
132
80a334e2aae7
moving pool to controller
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
1 |
from twisted.python.threadpool import ThreadPool |
|
80a334e2aae7
moving pool to controller
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
2 |
from twisted.internet import threads |
|
80a334e2aae7
moving pool to controller
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
3 |
|
|
80a334e2aae7
moving pool to controller
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
4 |
class Pool: |
|
80a334e2aae7
moving pool to controller
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
5 |
def __init__(self,name,maxthreads): |
|
80a334e2aae7
moving pool to controller
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
6 |
self.maxthreads = maxthreads |
|
80a334e2aae7
moving pool to controller
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
7 |
self.pool = ThreadPool(minthreads=1, maxthreads=maxthreads, name=name) |
|
80a334e2aae7
moving pool to controller
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
8 |
self.reactor = None |
|
80a334e2aae7
moving pool to controller
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
9 |
|
|
80a334e2aae7
moving pool to controller
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
10 |
def start(self, reactor): |
|
80a334e2aae7
moving pool to controller
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
11 |
self.pool.start() |
|
80a334e2aae7
moving pool to controller
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
12 |
self.reactor = reactor |
|
80a334e2aae7
moving pool to controller
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
13 |
self.reactor.addSystemEventTrigger('before', 'shutdown', self.pool.stop) |
|
80a334e2aae7
moving pool to controller
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
14 |
|
|
80a334e2aae7
moving pool to controller
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
15 |
def run(self,f,*args,**kwargs): |
|
80a334e2aae7
moving pool to controller
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
16 |
"""To run a function in Twisted's thread pool""" |
|
80a334e2aae7
moving pool to controller
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
17 |
return threads.deferToThreadPool(self.reactor, self.pool, f, *args, **kwargs) |
|
80a334e2aae7
moving pool to controller
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
18 |
|
| 135 | 19 |
#task Pool for sending |
|
132
80a334e2aae7
moving pool to controller
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
20 |
taskPool = Pool('task',5) |
| 135 | 21 |
|
22 |
#db Pool to handle reqests to sqlalchemy |
|
|
132
80a334e2aae7
moving pool to controller
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
23 |
dbPool = Pool('database',5) |
|
80a334e2aae7
moving pool to controller
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
24 |
|
| 135 | 25 |
# all pools in one list |
|
132
80a334e2aae7
moving pool to controller
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
26 |
pools=[taskPool,dbPool] |
|
80a334e2aae7
moving pool to controller
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
27 |
|
|
80a334e2aae7
moving pool to controller
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
28 |
def startPool(reactor): |
|
80a334e2aae7
moving pool to controller
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
29 |
'''starting all pools''' |
|
80a334e2aae7
moving pool to controller
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
30 |
for pool in pools: |
|
80a334e2aae7
moving pool to controller
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
31 |
pool.start(reactor) |