iro-service.tac
author Sandro Knauß <knauss@netzguerilla.net>
Wed, 21 Mar 2012 17:32:14 +0100
branchdevel
changeset 236 63662db5ff25
parent 229 1bd4c7f58b3f
permissions -rw-r--r--
tests for utf-8 have to be created
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
229
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     1
from twisted.application.service import Service, Application
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     2
from twisted.application import internet
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     3
from twisted.web import resource, server
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     4
from twisted.internet import reactor
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     5
from twisted.python import log
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     6
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     7
from sqlalchemy import create_engine, pool
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     8
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     9
from iro import config
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    10
from iro.view import xmlrpc
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    11
from iro.model import setEngine, setPool
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    12
from iro.controller.pool import startPool, dbPool
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    13
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    14
class IroService(Service):
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    15
    def startService(self):
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    16
        log.msg("Starting service...")
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    17
        engine = create_engine(config.main.dburl,
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    18
               poolclass = pool.SingletonThreadPool,  pool_size=dbPool.maxthreads, )
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    19
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    20
        setEngine(engine)
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    21
        startPool(reactor)
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    22
        setPool(dbPool)
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    23
        reactor.callWhenRunning(config.readConfig)
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    24
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    25
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    26
def get_application():
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    27
    app = Application("Iro")
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    28
    config.init()
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    29
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    30
    root = resource.Resource()
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    31
    root = xmlrpc.appendResource(root)
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    32
    
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    33
    v2 = resource.Resource()
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    34
    v2 = xmlrpc.appendResource(root)
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    35
    root.putChild('2.0', v2)
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    36
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    37
    internet.TCPServer(config.main.port, server.Site(root)).setServiceParent(app)
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    38
    IroService().setServiceParent(app)
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    39
    return app
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    40
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    41
application = get_application()