reactor is now started my iro.main devel
authorSandro Knauß <knauss@netzguerilla.net>
Thu, 26 Jan 2012 01:21:32 +0100
branchdevel
changeset 112 ea437d1e7b65
parent 111 8b493ab9c74f
child 113 abdece5f6be6
reactor is now started my iro.main
iro/main.py
iro/model/utils.py
iro/view/xmlrpc.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/iro/main.py	Thu Jan 26 01:21:32 2012 +0100
@@ -0,0 +1,29 @@
+from twisted.web import resource, server
+from twisted.internet import reactor
+
+from sqlalchemy import create_engine, pool
+
+import logging
+
+from .model.user import setEngine
+from .model.utils import POOL_SIZE as DB_POOL_SIZE, startPool
+from .view import xmlrpc
+
+def runReactor(reactor, engine, root):
+    setEngine(engine)
+    startPool(reactor)
+    
+    reactor.listenTCP(7080, server.Site(root))
+    logging.info("Server is running now...")
+    reactor.run()
+
+
+if __name__ == '__main__':
+    engine = create_engine('mysql://test:test@localhost/test',
+           poolclass = pool.SingletonThreadPool,  pool_size=DB_POOL_SIZE, )
+
+
+    root = resource.Resource()
+    root = xmlrpc.appendResource(root)
+    
+    runReactor(reactor, engine, root)
--- a/iro/model/utils.py	Thu Jan 26 01:20:03 2012 +0100
+++ b/iro/model/utils.py	Thu Jan 26 01:21:32 2012 +0100
@@ -1,19 +1,26 @@
 from sqlalchemy.orm import sessionmaker
 
-from twisted.internet import reactor
 from twisted.internet import threads
 from twisted.python.threadpool import ThreadPool
 
 POOL_SIZE=5     #how many threads should the db connector pool should have
 
-dbpool = ThreadPool(minthreads=1, maxthreads=POOL_SIZE, name='database')
-dbpool.start()
-reactor.addSystemEventTrigger('before', 'shutdown', dbpool.stop)
+class Data:
+    def __init__(self):
+        self.pool =  ThreadPool(minthreads=1, maxthreads=POOL_SIZE, name='database')
+        self.reactor = None
+
+d = Data()
+
+def startPool(reactor): 
+    d.pool.start()
+    d.reactor = reactor
+    d.reactor.addSystemEventTrigger('before', 'shutdown', d.pool.stop)
 
 def run_in_db_thread(f):
     """Decorator to run DB queries in Twisted's thread pool"""
     def wrapper(*args, **kwargs):
-        return threads.deferToThreadPool(reactor, dbpool,f, *args, **kwargs)
+        return threads.deferToThreadPool(d.reactor, d.pool, f, *args, **kwargs)
     return wrapper
 
 
--- a/iro/view/xmlrpc.py	Thu Jan 26 01:20:03 2012 +0100
+++ b/iro/view/xmlrpc.py	Thu Jan 26 01:21:32 2012 +0100
@@ -10,21 +10,15 @@
 
 #You should have received a copy of the GNU General Public License
 #along with this program; if not, see <http://www.gnu.org/licenses/>.
-from twisted.web import soap, xmlrpc, resource, server
-from twisted.internet import reactor
-
-import logging
-
+from twisted.web import soap, xmlrpc
 
 from ..controller.viewinterface import Interface
 
 from ..error import InterfaceException, ValidateException
 
 class TwistedInterface(Interface):
-    
     def __init__(self):
         Interface.__init__(self)
-    
 
     def listMethods(self):
         """Since we override lookupProcedure, its suggested to override
@@ -85,15 +79,16 @@
         else:
             return None
 
-def getResource():
-    root = resource.Resource()
+def appendResource(root):
     root.putChild('RPC2', XMLRPCInterface())
     root.putChild('SOAP', SOAPInterface())
     return root
 
-def main():
-    reactor.listenTCP(7080, server.Site(getResource()))
+if __name__ == '__main__':
+    from twisted.web import resource, server
+    from twisted.internet import reactor
+    
+    root = resource.Resource()
+    root = appendResource(root)
+    reactor.listenTCP(7080, server.Site(root))
     reactor.run()
-
-if __name__ == '__main__':
-    main()