Ejemplo n.º 1
0
 def _handle_connection_thread(self, sock: SCTSock):
     try:
         with ConnectionsWrapper(sock, self._connections):
             self._timeout.reset()
             with self._lock:
                 version = sock.recv().payload
                 if not self._plugin.checkVersion(version):
                     sock.send_init("init")
                     data = sock.recv().payload
                     self._plugin.setSettings(version, data)
             sock.send_init("data")
             con_pool = multiprocessing.pool.ThreadPool(1)
             data = sock.recv().payload
             result = con_pool.apply_async(self._plugin.exec, [data]).get(
                 self._request_timout
             )
             con_pool.close()
             self.send_data(sock, ErrorCodes.none, result)
     except multiprocessing.TimeoutError:
         self.send_data(sock, ErrorCodes.execution_timeout)
     except TooManyConnectionsError:
         self.send_data(sock, ErrorCodes.too_many_connections)
     except Exception as e:
         traceback = get_traceback(e)
         self.send_data(sock, ErrorCodes.exception, traceback)
         print(traceback)
     finally:
         sock.close()
Ejemplo n.º 2
0
 def _run_all(self, schedule):
     try:
         for c in schedule:
             if not c.done:
                 self.callback.start(c)
                 self._run_one(c)
                 self.callback.finish(c)
                 c.done = True
     except:
         self.callback.unfinish(c)
         self.callback.log(util.get_traceback())
Ejemplo n.º 3
0
    def request_handler(self, request):
        try:
            deserialized_request = self.serializer.deserialize(request)
            decoded_request = EngineRequest().decode_self(deserialized_request)
            response = self.execute(decoded_request)
            encoded_response = response.encode()
            serialized_response = self.serializer.serialize(encoded_response)
            return serialized_response

        except Exception:
            err = util.get_traceback()
            self.logger.log(err)

            response = EngineResponse() \
                .set_property('status', 'error') \
                .set_property('error', err)

            encoded_response = response.encode()
            serialized_response = self.serializer.serialize(encoded_response)
            return serialized_response
Ejemplo n.º 4
0
 def load_plugins(self):
     import sys
     import glob
     import os.path
     dirs = glob.glob(os.path.join('plugin', '*'))
     dirs.sort()
     for dir in dirs:
         if not os.path.isdir(dir): continue
         sys.path.append(dir)
         files = glob.glob(os.path.join(dir, '*_plugin.py'))
         files.sort()
         category = os.path.split(dir)[1]
         for f in files:
             try:
                 p = plugin(category, __import__(os.path.split(f)[-1][:-3]))
                 if (p.category, p.name) in [(q.category, q.name)
                                             for q in self.plugins]:
                     raise Exception, "Duplicate plugin name: %s/%s" % (
                         p.category, p.name)
                 self.plugins.append(p)
             except:
                 MsgBox("Cannot load %s -- \n%s" %
                        (f, util.get_traceback()))
Ejemplo n.º 5
0
 def LogException(self):
     self.WriteLog(util.get_traceback())
Ejemplo n.º 6
0
 def LogException(self):
     self.WriteLog(util.get_traceback())