~loggerhead-team/loggerhead/trunk-rich

« back to all changes in this revision

Viewing changes to start-loggerhead.py

  • Committer: Michael Hudson
  • Date: 2008-06-16 10:03:24 UTC
  • mfrom: (159.1.7 remove_caches)
  • Revision ID: michael.hudson@canonical.com-20080616100324-dyzbdp3xk2i1g34a
merge martin's remove caches branch, which removes the sql revision cache and
the textindexing code.
we still have the files changed cache.
(some further changes by me)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/env python
 
1
#!/usr/bin/env python2.4
 
2
 
 
3
import pkg_resources
 
4
pkg_resources.require("TurboGears")
2
5
 
3
6
import logging
4
 
import logging.handlers
5
 
from optparse import OptionParser
6
7
import os
7
8
import sys
8
 
import urlparse
9
 
 
10
 
from configobj import ConfigObj
11
 
 
12
 
from paste import httpserver
13
 
from paste.httpexceptions import make_middleware
14
 
from paste.translogger import make_filter
 
9
from optparse import OptionParser
 
10
 
 
11
import turbogears
 
12
import cherrypy
 
13
cherrypy.lowercase_api = True
15
14
 
16
15
from loggerhead import daemon, release
17
 
from loggerhead.apps.config import Root
18
16
 
19
17
 
20
18
def make_handler(config, filename):
27
25
        h = logging.FileHandler(filename)
28
26
    return h
29
27
 
30
 
 
 
28
        
31
29
def setup_logging(home, config, foreground):
32
30
    # i hate that stupid logging config format, so just set up logging here.
33
31
 
34
32
    log_folder = os.path.join(home, 'logs')
35
33
    if not os.path.exists(log_folder):
36
34
        os.mkdir(log_folder)
37
 
 
 
35
    
38
36
    f = logging.Formatter('%(levelname)-.3s [%(asctime)s.%(msecs)03d] %(name)s: %(message)s',
39
37
                          '%Y%m%d-%H:%M:%S')
40
38
    debug_log = make_handler(config, os.path.join(log_folder, 'debug.log'))
49
47
    access_log = make_handler(config, os.path.join(log_folder, 'access.log'))
50
48
    access_log.setLevel(logging.INFO)
51
49
    access_log.setFormatter(f)
52
 
 
 
50
    
53
51
    logging.getLogger('').addHandler(debug_log)
54
52
    logging.getLogger('turbogears.access').addHandler(access_log)
55
53
    logging.getLogger('turbogears.controllers').setLevel(logging.INFO)
56
 
 
 
54
    
57
55
    if foreground:
58
56
        logging.getLogger('').addHandler(stdout_log)
59
 
 
 
57
    
60
58
 
61
59
 
62
60
def main():
68
66
    options, args = parser.parse_args()
69
67
    if len(args) > 0:
70
68
        parser.error('No filename arguments are used, only options.')
71
 
 
72
 
 
 
69
        
 
70
        
73
71
    home = os.path.realpath(os.path.dirname(__file__))
74
72
    pidfile = os.path.join(home, 'loggerhead.pid')
75
 
 
 
73
    
76
74
    if options.check:
77
75
        if daemon.is_running(pidfile):
78
76
            sys.exit(0)
79
77
        sys.stderr.write('Did not find loggerhead running in %r; restarting...\n' % (pidfile,))
80
 
 
 
78
    
81
79
    # read loggerhead config
82
 
 
 
80
    
 
81
    from configobj import ConfigObj
83
82
    config = ConfigObj(os.path.join(home, 'loggerhead.conf'), encoding='utf-8')
84
83
    extra_path = config.get('bzrpath', None)
85
84
    if extra_path:
86
85
        sys.path.insert(0, extra_path)
87
 
 
88
 
    #turbogears.update_config(configfile="dev.cfg", modulename="loggerhead.config")
89
 
 
90
 
    potential_overrides = [ ('server.socket_port', int),
91
 
                            ('server.webpath', str),
92
 
                            ('server.thread_pool', int),
93
 
                            ('server.socket_host' ,str) ]
94
 
    server_port = int(config.get('server.socket_port', 8080))
95
 
    nworkers = int(config.get('server.thread_pool', 10))
96
 
    server_host = config.get('server.socket_host', '0.0.0.0')
97
 
    webpath = config.get('server.webpath', None)
98
 
 
 
86
    
 
87
    turbogears.update_config(configfile="dev.cfg", modulename="loggerhead.config")
 
88
    
 
89
    potential_overrides = [ ('server.socket_port', int), ('server.webpath', str), ('server.thread_pool', int), ('server.socket_host' ,str) ]
99
90
    for key, keytype in potential_overrides:
100
91
        value = config.get(key, None)
101
92
        if value is not None:
102
93
            value = keytype(value)
103
 
            #turbogears.config.update({ key: value })
104
 
 
 
94
            turbogears.config.update({ key: value })
 
95
    
105
96
    if not options.foreground:
106
97
        sys.stderr.write('\n')
107
98
        sys.stderr.write('Launching loggerhead into the background.\n')
108
99
        sys.stderr.write('PID file: %s\n' % (pidfile,))
109
100
        sys.stderr.write('\n')
110
 
 
 
101
    
111
102
        daemon.daemonize(pidfile, home)
112
103
 
113
104
    setup_logging(home, config, foreground=options.foreground)
114
 
 
 
105
        
115
106
    log = logging.getLogger('loggerhead')
116
107
    log.info('Starting up...')
117
 
 
118
 
    app = Root(config)
119
 
 
120
 
    app = app
121
 
    app = make_middleware(app)
122
 
    app = make_filter(app, None)
123
 
 
124
 
    if webpath:
125
 
        scheme, netloc, path, blah, blah, blah = urlparse.urlparse(webpath)
126
 
        def app(environ, start_response, orig=app):
127
 
            environ['SCRIPT_NAME'] = path
128
 
            environ['HTTP_HOST'] = netloc
129
 
            return orig(environ, start_response)
130
 
 
 
108
    
 
109
    from loggerhead.controllers import Root
 
110
    
 
111
    Root = Root(config)
 
112
    
131
113
    try:
132
 
        httpserver.serve(
133
 
            app, host=server_host, port=server_port,
134
 
            threadpool_workers=nworkers)
 
114
        turbogears.start_server(Root)
135
115
    finally:
136
116
        log.info('Shutdown.')
137
117
        try: