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