[ADD] oe web: run an OpenERP web process.
[odoo/odoo.git] / openerpcommand / web.py
1 """
2 Run a normal OpenERP HTTP process.
3 """
4
5 import logging
6 import os
7 import threading
8
9 import openerp.cli.server
10 import openerp.service.wsgi_server
11 import openerp.tools.config
12
13 import common
14
15 _logger = logging.getLogger(__name__)
16
17 def run(args):
18     os.environ["TZ"] = "UTC"
19
20     if args.addons:
21         args.addons = args.addons.split(':')
22     else:
23         args.addons = []
24
25     config = openerp.tools.config
26     config['addons_path'] = ','.join(args.addons)
27
28     openerp.cli.server.check_root_user()
29     openerp.netsvc.init_logger()
30     #openerp.cli.server.report_configuration()
31     openerp.cli.server.configure_babel_localedata_path()
32     openerp.cli.server.setup_signal_handlers()
33
34     target = openerp.service.wsgi_server.serve
35     if not args.gevent:
36         arg = (args.interface, int(args.port), args.threaded)
37         threading.Thread(target=target, args=arg).start()
38         openerp.cli.server.quit_on_signals()
39     else:
40         print "The --gevent option is not yet implemented."
41
42 def add_parser(subparsers):
43     parser = subparsers.add_parser('web',
44         description='Run a normal OpenERP HTTP process. By default a '
45         'singly-threaded Werkzeug server is used.')
46     common.add_addons_argument(parser)
47     parser.add_argument('--interface', default='0.0.0.0',
48         help='HTTP interface to listen on (default is %(default)s)')
49     parser.add_argument('--port', metavar='INT', default=8069,
50         help='HTTP port to listen on (default is %(default)s)')
51     parser.add_argument('--threaded', action='store_true',
52         help='Use a multithreaded Werkzeug server (incompatible with --gevent)')
53     parser.add_argument('--gevent', action='store_true',
54         help="Use gevent's WSGI server (incompatible with --threaded)")
55
56     parser.set_defaults(run=run)