diff options
| author | Christophe Simonis <chs@openerp.com> | 2013-06-10 18:07:11 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@openerp.com> | 2013-06-10 18:07:11 +0200 |
| commit | 3b36a3ea128008193e6c7dc24330a4e35cd83bd8 (patch) | |
| tree | d0ecb3eee934be1681fde29776fb12e5c714b39a /openerp/cli/server.py | |
| parent | 91548635759da838b6a7f62140e31a7db42f3ca5 (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.py | 14 |
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 |
