[ADD] oe web: run an OpenERP web process.
bzr revid: vmt@openerp.com-20130111153113-ue2ybx33e2gh99sx
This commit is contained in:
parent
3da57500c2
commit
8119d89200
|
@ -410,22 +410,15 @@ def application(environ, start_response):
|
|||
# The WSGI server, started by start_server(), stopped by stop_server().
|
||||
httpd = None
|
||||
|
||||
def serve():
|
||||
def serve(interface, port, threaded):
|
||||
""" Serve HTTP requests via werkzeug development server.
|
||||
|
||||
If werkzeug can not be imported, we fall back to wsgiref's simple_server.
|
||||
|
||||
Calling this function is blocking, you might want to call it in its own
|
||||
thread.
|
||||
"""
|
||||
|
||||
global httpd
|
||||
|
||||
# TODO Change the xmlrpc_* options to http_*
|
||||
interface = config['xmlrpc_interface'] or '0.0.0.0'
|
||||
port = config['xmlrpc_port']
|
||||
httpd = werkzeug.serving.make_server(interface, port, application, threaded=True)
|
||||
_logger.info('HTTP service (werkzeug) running on %s:%s', interface, port)
|
||||
httpd = werkzeug.serving.make_server(interface, port, application, threaded=threaded)
|
||||
httpd.serve_forever()
|
||||
|
||||
def start_service():
|
||||
|
@ -433,7 +426,11 @@ def start_service():
|
|||
|
||||
The WSGI server can be shutdown with stop_server() below.
|
||||
"""
|
||||
threading.Thread(target=serve).start()
|
||||
# TODO Change the xmlrpc_* options to http_*
|
||||
interface = config['xmlrpc_interface'] or '0.0.0.0'
|
||||
port = config['xmlrpc_port']
|
||||
_logger.info('HTTP service (werkzeug) running on %s:%s', interface, port)
|
||||
threading.Thread(target=serve, args=(interface, port, True)).start()
|
||||
|
||||
def stop_service():
|
||||
""" Initiate the shutdown of the WSGI server.
|
||||
|
|
|
@ -17,9 +17,10 @@ from . import run_tests
|
|||
from . import scaffold
|
||||
from . import uninstall
|
||||
from . import update
|
||||
from . import web
|
||||
|
||||
command_list_server = (conf, drop, initialize, model, module, read, run_tests,
|
||||
scaffold, uninstall, update, )
|
||||
scaffold, uninstall, update, web, )
|
||||
|
||||
command_list_client = (Call, Open, Show, ConsumeNothing, ConsumeMemory,
|
||||
LeakMemory, ConsumeCPU, Bench, BenchRead,
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
"""
|
||||
Run a normal OpenERP HTTP process.
|
||||
"""
|
||||
|
||||
import logging
|
||||
import os
|
||||
import threading
|
||||
|
||||
import openerp.cli.server
|
||||
import openerp.service.wsgi_server
|
||||
import openerp.tools.config
|
||||
|
||||
import common
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
def run(args):
|
||||
os.environ["TZ"] = "UTC"
|
||||
|
||||
if args.addons:
|
||||
args.addons = args.addons.split(':')
|
||||
else:
|
||||
args.addons = []
|
||||
|
||||
config = openerp.tools.config
|
||||
config['addons_path'] = ','.join(args.addons)
|
||||
|
||||
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:
|
||||
arg = (args.interface, int(args.port), args.threaded)
|
||||
threading.Thread(target=target, args=arg).start()
|
||||
openerp.cli.server.quit_on_signals()
|
||||
else:
|
||||
print "The --gevent option is not yet implemented."
|
||||
|
||||
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)
|
Loading…
Reference in New Issue