# HG changeset patch # User Matt Johnston # Date 1357215127 -28800 # Node ID 3db3665af2e2f207a2ad541ea6aaed557caf7b9c # Parent e12d6d677320e595ee24ce05cb0682735d7e1ada reload config on SIGHUP diff -r e12d6d677320 -r 3db3665af2e2 py/params.py --- 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)) diff -r e12d6d677320 -r 3db3665af2e2 py/tempserver.py --- a/py/tempserver.py Thu Jan 03 20:11:54 2013 +0800 +++ b/py/tempserver.py Thu Jan 03 20:12:07 2013 +0800 @@ -47,7 +47,10 @@ # won't return. while True: - gevent.sleep(60) + try: + gevent.sleep(60) + except KeyboardInterrupt: + break def now(self): return utils.monotonic_time()