iro/main.py
author Sandro Knauß <knauss@netzguerilla.net>
Fri, 30 Mar 2012 11:23:22 +0200
branchdevel
changeset 267 ef2df3f23cb1
parent 223 8a7a976a6d58
child 294 0e75bd39767d
permissions -rw-r--r--
adding docstring: iro

from twisted.web import resource, server
from twisted.internet import reactor
from twisted.python import log

from sqlalchemy import create_engine, pool

from .model import setEngine, setPool
from .controller.pool import startPool, dbPool
from .view import xmlrpc
from . import config

def runReactor(reactor, engine, port, root):
    """start reactor.
    
    :param reactor: twisted reactor
    :param engine: sqlalchemy engine
    :param integer port: port to listen to
    :param `twisted.web.resource.Resource` root: resource to share
    """
    setEngine(engine)
    startPool(reactor)
    setPool(dbPool)
    
    reactor.listenTCP(port, server.Site(root))
    log.msg("Server is running now...")
    reactor.run()


if __name__ == '__main__':
   
    config.readConfig()

    engine = create_engine(config.main.dburl,
           poolclass = pool.SingletonThreadPool,  pool_size=dbPool.maxthreads, )


    root = resource.Resource()
    root = xmlrpc.appendResource(root)
    
    v2 = resource.Resource()
    v2 = xmlrpc.appendResource(root)
    root.putChild('2.0', v2)

    runReactor(reactor, engine, config.main.port, root)