iro/model/pool.py
branchdevel
changeset 258 0a5eb5aac0be
parent 151 ff8448fb07e7
child 294 0e75bd39767d
equal deleted inserted replaced
257:31114e40178d 258:0a5eb5aac0be
     1 from decorator import decorator
     1 from decorator import decorator
     2 import sqlalchemy
     2 import sqlalchemy
     3 class Data:
     3 class Data:
       
     4     """A very simple class to save the thread pool for database requests"""
     4     def __init__(self):
     5     def __init__(self):
     5         self.pool =  None
     6         self.pool =  None
     6 
     7 
     7 data = Data()
     8 data = Data()
     8 #a valid dbDefer decorator
     9 """holds connection to the actual thread pool for the database requests"""
     9 
    10 
    10 def setPool(pool): 
    11 def setPool(pool): 
       
    12     """setting the thread pool"""
    11     data.pool = pool
    13     data.pool = pool
    12 
    14 
    13 @decorator
    15 @decorator
    14 def runInDBPool(f,*args,**kwargs):
    16 def runInDBPool(f,*args,**kwargs):
    15     """Decorator to run DB queries in Twisted's thread pool"""
    17     """Decorator to run DB queries in Twisted's thread pool.
       
    18     
       
    19     If last argument is a session object, the function is called directly.
       
    20     """
    16     if isinstance(args[-1],sqlalchemy.orm.session.Session):
    21     if isinstance(args[-1],sqlalchemy.orm.session.Session):
    17         return f(*args,**kwargs)
    22         return f(*args,**kwargs)
    18     else:
    23     else:
    19         return data.pool.run(f, *args, **kwargs)
    24         return data.pool.run(f, *args, **kwargs)
    20 
    25