コード例 #1
0
ファイル: server.py プロジェクト: nikoloss/pyfadeaway
 def dispatch(self, frame):
     data = frame[-1]
     frame.remove(data)
     try:
         request = protocol.Request.loads(data)
         executor.submit(_async_run, self, request, self.send, frame)
         Log.get_logger().debug('[request] mid: %s call_at: %f expire_at: %f ***** %s.%s(%s, %s)', request.mid,
                                request.call_at,
                                request.expire_at, request.klass, request.method, request.args, request.kwargs)
     except Exception, e:
         Log.get_logger().exception(e)
コード例 #2
0
ファイル: server.py プロジェクト: shanewfx/pyfadeaway
 def dispatch(self, frame):
     data = frame[-1]
     frame.remove(data)
     try:
         request = protocol.Request.loads(data)
         executor.submit(_async_run, self, request, self.send, frame)
         Log.get_logger().debug(
             '[request] mid: %s call_at: %f expire_at: %f ***** %s.%s(%s, %s)',
             request.mid, request.call_at, request.expire_at, request.klass,
             request.method, request.args, request.kwargs)
     except Exception, e:
         Log.get_logger().exception(e)
コード例 #3
0
ファイル: server.py プロジェクト: nikoloss/pyfadeaway
def _async_run(handler, request, callback, frame):
    tik = time.time()
    response = protocol.Response.to(request)
    try:
        klass = request.klass
        method = request.method
        args = request.args
        kwargs = request.kwargs
        expire_at = request.expire_at
        call_at = request.call_at
        if WASTE_GAP and tik - call_at > WASTE_GAP:
            # 设置WASTE_GAP意味着被调用请求到收到请求耗时超过WASTE_GAP秒,则不处理了
            Log.get_logger().debug('[abandon] mid: %s call_at: hands_on_at: %f',
                                   response.mid, request.call_at, tik)
            return
        func = handler.get_ref(klass, method, args, kwargs)
        res = func()
        tok = time.time()
        costs = tok - tik
        response.set_result(res)
        response.set_costs(costs)

        if tok > expire_at > 0:
            Log.get_logger().debug('[timeout] mid: %s call_at: %f expire_at: %f hands_on_at: %f done_at: %f costs: %f',
                                   response.mid, request.call_at, request.expire_at, tik, tok, costs)
            return
        Log.get_logger().debug('[response] mid: %s status: %d costs: %f', response.mid, response.status, costs)
    except Exception as e:
        tok = time.time()
        costs = tok - tik
        response.set_error(e)
        response.set_costs(costs)
        Log.get_logger().exception(e)
    frame.append(response.box())
    IOLoop.instance().add_callback(callback, frame)
コード例 #4
0
ファイル: monitor.py プロジェクト: nikoloss/pyfadeaway
 def on_read(self):
     try:
         bevent, endpoint = self._visor.recv_multipart()
         event, _ = struct.unpack('=hi', bevent)
         if event & zmq.EVENT_CONNECTED:
             Log.get_logger().debug('[%s] connection available' % endpoint)
             if hasattr(self, 'available_cb'):
                 self.available_cb()
         if event & zmq.EVENT_DISCONNECTED:
             Log.get_logger().debug('[%s] connection unavailable' % endpoint)
             if hasattr(self, 'unavailable_cb'):
                 self.unavailable_cb()
     except Exception as e:
         Log.get_logger().debug(e)
コード例 #5
0
ファイル: server.py プロジェクト: shanewfx/pyfadeaway
def _async_run(handler, request, callback, frame):
    tik = time.time()
    response = protocol.Response.to(request)
    try:
        klass = request.klass
        method = request.method
        args = request.args
        kwargs = request.kwargs
        expire_at = request.expire_at
        call_at = request.call_at
        if WASTE_GAP and tik - call_at > WASTE_GAP:
            # 设置WASTE_GAP意味着被调用请求到收到请求耗时超过WASTE_GAP秒,则不处理了
            Log.get_logger().debug(
                '[abandon] mid: %s call_at: hands_on_at: %f', response.mid,
                request.call_at, tik)
            return
        func = handler.get_ref(klass, method, args, kwargs)
        res = func()
        tok = time.time()
        costs = tok - tik
        response.set_result(res)
        response.set_costs(costs)

        if tok > expire_at > 0:
            Log.get_logger().debug(
                '[timeout] mid: %s call_at: %f expire_at: %f hands_on_at: %f done_at: %f costs: %f',
                response.mid, request.call_at, request.expire_at, tik, tok,
                costs)
            return
        Log.get_logger().debug('[response] mid: %s status: %d costs: %f',
                               response.mid, response.status, costs)
    except Exception as e:
        tok = time.time()
        costs = tok - tik
        response.set_error(e)
        response.set_costs(costs)
        Log.get_logger().exception(e)
    frame.append(response.box())
    IOLoop.instance().add_callback(callback, frame)
コード例 #6
0
 def on_read(self):
     try:
         bevent, endpoint = self._visor.recv_multipart()
         event, _ = struct.unpack('=hi', bevent)
         if event & zmq.EVENT_CONNECTED:
             Log.get_logger().debug('[%s] connection available' % endpoint)
             if hasattr(self, 'available_cb'):
                 self.available_cb()
         if event & zmq.EVENT_DISCONNECTED:
             Log.get_logger().debug('[%s] connection unavailable' %
                                    endpoint)
             if hasattr(self, 'unavailable_cb'):
                 self.unavailable_cb()
     except Exception as e:
         Log.get_logger().debug(e)