odoo/openerpcommand/web.py

67 lines
2.2 KiB
Python

"""
Run a normal OpenERP HTTP process.
"""
import logging
import os
import threading
import common
_logger = logging.getLogger(__name__)
def run(args):
import openerp.cli.server
import openerp.service.wsgi_server
import openerp.tools.config
config = openerp.tools.config
os.environ["TZ"] = "UTC"
common.set_addons(args)
openerp.multi_process = True
common.setproctitle('openerp-web')
openerp.cli.server.check_root_user()
openerp.netsvc.init_logger()
#openerp.cli.server.report_configuration()
openerp.cli.server.configure_babel_localedata_path()
openerp.cli.server.setup_signal_handlers()
target = openerp.service.wsgi_server.serve
if not args.gevent:
# TODO openerp.multi_process with a multi-threaded process probably
# doesn't work very well (e.g. waiting for all threads to complete
# before killing the process is not implemented).
arg = (args.interface, int(args.port), args.threaded)
threading.Thread(target=target, args=arg).start()
openerp.cli.server.quit_on_signals()
else:
config.options["gevent"] = True
import gevent.monkey
import gevent.wsgi
import gevent_psycopg2
gevent.monkey.patch_all()
gevent_psycopg2.monkey_patch()
app = openerp.service.wsgi_server.application
server = gevent.wsgi.WSGIServer((args.interface, int(args.port)), app)
server.serve_forever()
# TODO quit_on_signals
def add_parser(subparsers):
parser = subparsers.add_parser('web',
description='Run a normal OpenERP HTTP process. By default a '
'singly-threaded Werkzeug server is used.')
common.add_addons_argument(parser)
parser.add_argument('--interface', default='0.0.0.0',
help='HTTP interface to listen on (default is %(default)s)')
parser.add_argument('--port', metavar='INT', default=8069,
help='HTTP port to listen on (default is %(default)s)')
parser.add_argument('--threaded', action='store_true',
help='Use a multithreaded Werkzeug server (incompatible with --gevent)')
parser.add_argument('--gevent', action='store_true',
help="Use gevent's WSGI server (incompatible with --threaded)")
parser.set_defaults(run=run)