From 6e897496b33303a35239cad72a1dfe0bd506537d Mon Sep 17 00:00:00 2001 From: Seth Schoen Date: Mon, 13 Aug 2012 00:16:38 -0700 Subject: [PATCH] use pubsub for logging! --- server-ca/chocolate.py | 1 + server-ca/daemon.py | 22 ++++++++++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/server-ca/chocolate.py b/server-ca/chocolate.py index f87e3c6cd..a8da557ff 100755 --- a/server-ca/chocolate.py +++ b/server-ca/chocolate.py @@ -322,6 +322,7 @@ class session(object): # TODO: Process challenge-related messages from the client. def log(self, msg): + sessions.publish("logs", "%s: %s" % (self.id, msg)) if debug: print "%s: %s" % (self.id, msg) def die(self, r, reason, uri=None): diff --git a/server-ca/daemon.py b/server-ca/daemon.py index b72fc4275..5e8aa1a41 100644 --- a/server-ca/daemon.py +++ b/server-ca/daemon.py @@ -77,7 +77,7 @@ clean_shutdown = False def signal_handler(a, b): global clean_shutdown clean_shutdown = True - r.publish("requests", "clean-exit") + r.publish("exit", "clean-exit") signal.signal(signal.SIGTERM, signal_handler) signal.signal(signal.SIGINT, signal_handler) @@ -296,15 +296,25 @@ dispatch = { "makechallenge": ("pending-makechallenge", makechallenge), # item from each queue until all queues are empty. ps.subscribe(["requests"]) +ps.subscribe(["logs"]) +ps.subscribe(["exit"]) for message in ps.listen(): - populated_queue = message["data"] - if populated_queue == "clean-exit": - pass # fall through to check whether this particular daemon - # instance has its clean_shutdown flag set - else: + if message["type"] != "message": + continue + if message["channel"] == "logs": + if debug: print message["data"] + continue + if message["channel"] == "exit": + break + if message["channel"] == "requests": + # populated_queue would be used by a more sophisticated scheduler + populated_queue = message["data"] while True: inactive = True for queue in ("makechallenge", "testchallenge", "issue"): + if clean_shutdown: + inactive = True + break session = r.rpop("pending-" + queue) if session: inactive = False