From 5b06e8d25e8b4a9a5150d57da311fa07be9562b5 Mon Sep 17 00:00:00 2001 From: Ryan Kraus Date: Tue, 1 Sep 2015 02:37:52 -0400 Subject: [PATCH] Daemon handling cleanup. More cleanly handling whether a PID file should be checked. Fatal Error on PID file IOError. Pylint fix to bootstrap. --- homeassistant/__main__.py | 25 +++++++++++++------------ homeassistant/bootstrap.py | 2 +- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/homeassistant/__main__.py b/homeassistant/__main__.py index e0502da705d..f855b8f5496 100644 --- a/homeassistant/__main__.py +++ b/homeassistant/__main__.py @@ -118,19 +118,18 @@ def daemonize(): def check_pid(pid_file): """ Check that HA is not already running """ # check pid file - if pid_file: + try: + pid = int(open(pid_file, 'r').readline()) + except IOError: + pass + else: try: - pid = int(open(pid_file, 'r').readline()) - except IOError: + os.kill(pid, 0) + except OSError: pass else: - try: - os.kill(pid, 0) - except OSError: - pass - else: - print('Fatal Error: HomeAssistant is already running.') - sys.exit(1) + print('Fatal Error: HomeAssistant is already running.') + sys.exit(1) def write_pid(pid_file): @@ -142,7 +141,8 @@ def write_pid(pid_file): try: open(pid_file, 'w').write(str(pid)) except IOError: - pass + print('Fatal Error: Unable to write pid file {}'.format(pid_file)) + sys.exit(1) def main(): @@ -155,7 +155,8 @@ def main(): ensure_config_path(config_dir) # daemon functions - check_pid(args.pid_file) + if args.pid_file: + check_pid(args.pid_file) if args.daemon: daemonize() write_pid(args.pid_file) diff --git a/homeassistant/bootstrap.py b/homeassistant/bootstrap.py index 74b831d58c1..4b98765e34d 100644 --- a/homeassistant/bootstrap.py +++ b/homeassistant/bootstrap.py @@ -149,7 +149,7 @@ def mount_local_lib_path(config_dir): sys.path.insert(0, os.path.join(config_dir, 'lib')) -# pylint: disable=too-many-branches, too-many-statements +# pylint: disable=too-many-branches, too-many-statements, too-many-arguments def from_config_dict(config, hass=None, config_dir=None, enable_log=True, verbose=False, daemon=False): """