2 Run a normal OpenERP HTTP process.
11 _logger = logging.getLogger(__name__)
15 import openerp.cli.server
16 import openerp.service.wsgi_server
17 import openerp.tools.config
18 config = openerp.tools.config
20 os.environ["TZ"] = "UTC"
21 common.set_addons(args)
23 openerp.multi_process = True
24 common.setproctitle('openerp-web')
26 openerp.cli.server.check_root_user()
27 openerp.netsvc.init_logger()
28 #openerp.cli.server.report_configuration()
29 openerp.cli.server.configure_babel_localedata_path()
30 openerp.cli.server.setup_signal_handlers()
32 target = openerp.service.wsgi_server.serve
34 openerp.evented = False
35 # TODO openerp.multi_process with a multi-threaded process probably
36 # doesn't work very well (e.g. waiting for all threads to complete
37 # before killing the process is not implemented).
38 arg = (args.interface, int(args.port), args.threaded)
39 threading.Thread(target=target, args=arg).start()
40 openerp.cli.server.quit_on_signals()
42 openerp.evented = True
45 import gevent_psycopg2
46 gevent.monkey.patch_all()
47 gevent_psycopg2.monkey_patch()
49 app = openerp.service.wsgi_server.application
50 server = gevent.wsgi.WSGIServer((args.interface, int(args.port)), app)
51 server.serve_forever()
52 # TODO quit_on_signals
54 def add_parser(subparsers):
55 parser = subparsers.add_parser('web',
56 description='Run a normal OpenERP HTTP process. By default a '
57 'singly-threaded Werkzeug server is used.')
58 common.add_addons_argument(parser)
59 parser.add_argument('--interface', default='0.0.0.0',
60 help='HTTP interface to listen on (default is %(default)s)')
61 parser.add_argument('--port', metavar='INT', default=8069,
62 help='HTTP port to listen on (default is %(default)s)')
63 parser.add_argument('--threaded', action='store_true',
64 help='Use a multithreaded Werkzeug server (incompatible with --gevent)')
65 parser.add_argument('--gevent', action='store_true',
66 help="Use gevent's WSGI server (incompatible with --threaded)")
68 parser.set_defaults(run=run)