diff --git a/openerp/cli/server.py b/openerp/cli/server.py index eec85756469..0d346f160c4 100644 --- a/openerp/cli/server.py +++ b/openerp/cli/server.py @@ -29,6 +29,7 @@ GNU Public Licence. (c) 2003-TODAY, Fabien Pinckaers - OpenERP SA """ +import atexit import logging import os import signal @@ -78,16 +79,22 @@ def report_configuration(): ('database user', config['db_user'])]: _logger.info("%s: %s", name, value) +def rm_pid_file(): + config = openerp.tools.config + if not openerp.evented and os.path.exists(config['pidfile']): + os.unlink(config['pidfile']) + def setup_pid_file(): """ Create a file with the process id written in it. This function assumes the configuration has been initialized. """ config = openerp.tools.config - if config['pidfile']: + if not openerp.evented and config['pidfile']: with open(config['pidfile'], 'w') as fd: pidtext = "%d" % (os.getpid()) fd.write(pidtext) + atexit.register(rm_pid_file) def preload_registry(dbname): """ Preload a registry, and start the cron.""" @@ -189,14 +196,9 @@ def main(args): if not config["stop_after_init"]: setup_pid_file() openerp.service.server.start() - if config['pidfile']: - os.unlink(config['pidfile']) else: sys.exit(rc) - _logger.info('OpenERP server is running, waiting for connections...') - quit_on_signals() - class Server(Command): def run(self, args): main(args) diff --git a/openerp/service/server.py b/openerp/service/server.py index 6a558a24e91..6a87c85e56b 100644 --- a/openerp/service/server.py +++ b/openerp/service/server.py @@ -429,7 +429,7 @@ class PreforkServer(CommonServer): sys.exit(0) def long_polling_spawn(self): - nargs = stripped_sys_argv('--pidfile','--workers') + nargs = stripped_sys_argv() cmd = nargs[0] cmd = os.path.join(os.path.dirname(cmd), "openerp-gevent") nargs[0] = cmd @@ -814,10 +814,10 @@ def start(): """ global server load_server_wide_modules() - if config['workers']: - server = PreforkServer(openerp.service.wsgi_server.application) - elif openerp.evented: + if openerp.evented: server = GeventServer(openerp.service.wsgi_server.application) + elif config['workers']: + server = PreforkServer(openerp.service.wsgi_server.application) else: server = ThreadedServer(openerp.service.wsgi_server.application)