コード例 #1
0
ファイル: query.py プロジェクト: lbzhao28/snakes
 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)
コード例 #2
0
 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)