def run (self) : while True : data, address = self.recvfrom() data = data.strip() if self._verbose : print("# query from %s:%u" % address) try : if self._verbose > 1 : print(data) res = loads(data).run(self._env) if res is None : res = Tree("answer", None, status="ok") else : res = Tree("answer", None, Tree.from_obj(res), status="ok") except : cls, val, tb = sys.exc_info() res = Tree("answer", str(val).strip(), error=cls.__name__, status="error") if self._verbose > 1 : print("# error") for entry in traceback.format_exception(cls, val, tb) : for line in entry.splitlines() : print("## %s" % line) if self._verbose : if self._verbose > 1 : print("# answer") print(res.to_pnml()) elif res["status"] == "error" : print("# answer: %s: %s" % (res["error"], res.data)) else : print("# answer: %s" % res["status"]) self.sendto(res.to_pnml(), address)
def run(self): while True: data, address = self.recvfrom() data = data.strip() if self._verbose: print("# query from %s:%u" % address) try: if self._verbose > 1: print(data) res = loads(data).run(self._env) if res is None: res = Tree("answer", None, status="ok") else: res = Tree("answer", None, Tree.from_obj(res), status="ok") except: cls, val, tb = sys.exc_info() res = Tree("answer", str(val).strip(), error=cls.__name__, status="error") if self._verbose > 1: print("# error") for entry in traceback.format_exception(cls, val, tb): for line in entry.splitlines(): print("## %s" % line) if self._verbose: if self._verbose > 1: print("# answer") print(res.to_pnml()) elif res["status"] == "error": print("# answer: %s: %s" % (res["error"], res.data)) else: print("# answer: %s" % res["status"]) self.sendto(res.to_pnml(), address)