summaryrefslogtreecommitdiff
path: root/openerp/cli
diff options
context:
space:
mode:
authorChristophe Simonis <chs@openerp.com>2013-06-13 19:39:00 +0200
committerChristophe Simonis <chs@openerp.com>2013-06-13 19:39:00 +0200
commita61e7cb0c80ae773cab9753bd8a4e7e888bbf415 (patch)
tree019a235869a5e087055700895d4584c80e2f9afb /openerp/cli
parent5ed0ac2614b9430e61dae472d657a21c037d6ee9 (diff)
parent180e6e41d81e28df43b41e3cb6131225d4169a28 (diff)
[MERGE] forward port of branch saas-1 up to revid 4887 chs@openerp.com-20130612153934-qyp6pb3bc4za4taf
bzr revid: chs@openerp.com-20130613172414-dln3g4j0ykcwaa02 bzr revid: chs@openerp.com-20130613173900-xl7rh321nnw2b04b
Diffstat (limited to 'openerp/cli')
-rw-r--r--openerp/cli/server.py22
1 files changed, 20 insertions, 2 deletions
diff --git a/openerp/cli/server.py b/openerp/cli/server.py
index 2ee9e53b3ca..fc1bf61b617 100644
--- a/openerp/cli/server.py
+++ b/openerp/cli/server.py
@@ -221,6 +221,18 @@ def quit_on_signals():
os.unlink(config['pidfile'])
sys.exit(0)
+def watch_parent(beat=4):
+ import gevent
+ ppid = os.getppid()
+ while True:
+ if ppid != os.getppid():
+ pid = os.getpid()
+ _logger.info("LongPolling (%s) Parent changed", pid)
+ # suicide !!
+ os.kill(pid, signal.SIGTERM)
+ return
+ gevent.sleep(beat)
+
def main(args):
check_root_user()
openerp.tools.config.parse_config(args)
@@ -257,9 +269,15 @@ def main(args):
setup_pid_file()
# Some module register themselves when they are loaded so we need the
# services to be running before loading any registry.
- if config['workers']:
- openerp.service.start_services_workers()
+ if not openerp.evented:
+ if config['workers']:
+ openerp.service.start_services_workers()
+ else:
+ openerp.service.start_services()
else:
+ config['xmlrpc_port'] = config['longpolling_port']
+ import gevent
+ gevent.spawn(watch_parent)
openerp.service.start_services()
rc = 0