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)
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)
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)
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)
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)
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)