Mercurial > templog
diff py/params.py @ 157:6d799bee3508
reload config on SIGHUP
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Thu, 03 Jan 2013 20:12:07 +0800 |
parents | d03157c7ad60 |
children | 256505f98c4d |
line wrap: on
line diff
--- a/py/params.py Thu Jan 03 20:11:54 2013 +0800 +++ b/py/params.py Thu Jan 03 20:12:07 2013 +0800 @@ -1,6 +1,10 @@ # -*- coding: utf-8 -*- import collections import json +import signal + +import gevent + import config from utils import W,L,E,EX @@ -17,6 +21,7 @@ def __init__(self): self.update(_FIELD_DEFAULTS) + gevent.signal(signal.SIGHUP, self.reload_signal) def __getattr__(self, k): return self[k] @@ -33,7 +38,11 @@ except IOError, e: W("Missing parameter file, using defaults. %s", e) return - u = json.load(f) + try: + u = json.load(f) + except Exception, e: + raise self.Error(e) + for k in u: if k not in self: raise self.Error("Unknown parameter %s=%s in file '%s'" % (str(k), str(u[k]), getattr(f, 'name', '???'))) @@ -45,3 +54,10 @@ json.dump(self, f, sort_keys=True, indent=4) f.write('\n') f.flush() + + def reload_signal(self): + try: + self.load() + L("Reloaded params") + except self.Error, e: + W("Problem reloading: %s" % str(e))