aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Christopher Baklid <[email protected]>2018-05-27 11:34:39 +0200
committerGravatar Christopher Baklid <[email protected]>2018-05-27 11:34:39 +0200
commit7ce4bff4b6e707542bc2cabe604f15eefb432e12 (patch)
tree8cbd358746a02bd8b22f4529dd2fcdf1ccb8a0ca
parentkick off jobs in their own processes (diff)
now also captures stderr
-rw-r--r--rmq.py6
-rw-r--r--snekbox.py21
-rw-r--r--snekweb.py2
3 files changed, 19 insertions, 10 deletions
diff --git a/rmq.py b/rmq.py
index 94f2217..c93e787 100644
--- a/rmq.py
+++ b/rmq.py
@@ -111,13 +111,11 @@ class Rmq(object):
properties=self.properties)
if result:
- log.info((f"published message: {self.host} "
- f"port: {self.port} "
- f"exchange: {exchange} "
+ log.info((f"published: {self.host} "
f"queue: {queue} "
f"message: {message}"))
else:
- log.error(f"Messge '{message}' not delivered")
+ log.error(f"Message '{message}' not delivered")
except ConnectionClosed:
log.error(f"Could not send message, connection to {self.host} was lost")
diff --git a/snekbox.py b/snekbox.py
index d047996..42bec91 100644
--- a/snekbox.py
+++ b/snekbox.py
@@ -16,24 +16,35 @@ def execute(body):
failed = False
old_stdout = sys.stdout
+ old_stderr = sys.stderr
redirected_output = sys.stdout = io.StringIO()
+ redirected_error = sys.stderr = io.StringIO()
+ snek_msg = json.loads(msg)
+ snekid = snek_msg['snekid']
+ snekcode = snek_msg['message'].strip()
try:
-
- snek_msg = json.loads(msg)
- for snekid, snekcode in snek_msg.items():
- exec(snekcode)
+ exec(snekcode)
except Exception as e:
failed = str(e)
finally:
sys.stdout = old_stdout
+ sys.stderr = old_stderr
if failed:
result = failed.strip()
+ log.debug(f"this was captured via exception: {result}")
+
+ result_err = redirected_error.getvalue().strip()
+ result_ok = redirected_output.getvalue().strip()
- result = redirected_output.getvalue().strip()
+ if result_err:
+ log.debug(f"this was captured via stderr: {result_err}")
+ result = result_err
+ if result_ok:
+ result = result_ok
log.info(f"outgoing: {result}")
diff --git a/snekweb.py b/snekweb.py
index 2c0bb91..92e0436 100644
--- a/snekweb.py
+++ b/snekweb.py
@@ -54,7 +54,7 @@ def websocket_route(ws, snekboxid):
while not ws.closed:
message = ws.receive()
if message:
- snek_msg = json.dumps({snekboxid: message})
+ snek_msg = json.dumps({"snekid": snekboxid, "message": message})
log.info(f"User {snekboxid} sends message\n{message.strip()}")
rmq.publish(snek_msg)