# HG changeset patch # User Sandro Knauß # Date 1327537292 -3600 # Node ID ea437d1e7b6535eca5864d07e5b9e31221fde3f7 # Parent 8b493ab9c74f237c00b6ed9033b20a7409090e13 reactor is now started my iro.main diff -r 8b493ab9c74f -r ea437d1e7b65 iro/main.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) diff -r 8b493ab9c74f -r ea437d1e7b65 iro/model/utils.py --- 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 diff -r 8b493ab9c74f -r ea437d1e7b65 iro/view/xmlrpc.py --- 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 . -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()