summaryrefslogtreecommitdiff
path: root/openerp/cli/server.py
diff options
context:
space:
mode:
authorChristophe Simonis <chs@openerp.com>2013-06-10 18:07:11 +0200
committerChristophe Simonis <chs@openerp.com>2013-06-10 18:07:11 +0200
commit3b36a3ea128008193e6c7dc24330a4e35cd83bd8 (patch)
treed0ecb3eee934be1681fde29776fb12e5c714b39a /openerp/cli/server.py
parent91548635759da838b6a7f62140e31a7db42f3ca5 (diff)
[FIX] watch parent when run in evented mode
bzr revid: chs@openerp.com-20130610160711-xvnmonm59al7e89l
Diffstat (limited to 'openerp/cli/server.py')
-rw-r--r--openerp/cli/server.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/openerp/cli/server.py b/openerp/cli/server.py
index 3d269a3c458..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)
@@ -264,6 +276,8 @@ def main(args):
openerp.service.start_services()
else:
config['xmlrpc_port'] = config['longpolling_port']
+ import gevent
+ gevent.spawn(watch_parent)
openerp.service.start_services()
rc = 0