def fetch(self, startTime, endTime): if not self.__isLeaf: return [] query_params = [ ('target', self.metric_path), ('format', 'pickle'), ('from', str( int(startTime) )), ('until', str( int(endTime) )) ] query_string = urlencode(query_params) connection = HTTPConnectionWithTimeout(self.store.host) connection.timeout = settings.REMOTE_STORE_FETCH_TIMEOUT connection.request('GET', '/graphite/render/?' + query_string) response = connection.getresponse() assert response.status == 200, "Failed to retrieve remote data: %d %s" % (response.status, response.reason) rawData = response.read() seriesList = unpickle.loads(rawData) assert len(seriesList) == 1, "Invalid result: seriesList=%s" % str(seriesList) series = seriesList[0] timeInfo = (series['start'], series['end'], series['step']) return (timeInfo, series['values'])
def renderLocalView(request): try: start = time() reqParams = StringIO(request.raw_post_data) graphType = reqParams.readline().strip() optionsPickle = reqParams.read() reqParams.close() graphClass = GraphTypes[graphType] options = unpickle.loads(optionsPickle) image = doImageRender(graphClass, options) log.rendering("Delegated rendering request took %.6f seconds" % (time() - start)) return buildResponse(image) except: log.exception("Exception in graphite.render.views.rawrender") return HttpResponseServerError()
def get_results(self): if self.cachedResults: return self.cachedResults if not self.connection: self.send() try: response = self.connection.getresponse() assert response.status == 200, "received error response %s - %s" % (response.status, response.reason) result_data = response.read() results = unpickle.loads(result_data) except: self.store.fail() if not self.suppressErrors: raise else: results = [] resultNodes = [ RemoteNode(self.store, node['metric_path'], node['isLeaf']) for node in results ] cache.set(self.cacheKey, resultNodes, settings.REMOTE_FIND_CACHE_DURATION) self.cachedResults = resultNodes return resultNodes
def recv_response(self, conn): len_prefix = recv_exactly(conn, 4) body_size = struct.unpack("!L", len_prefix)[0] body = recv_exactly(conn, body_size) return unpickle.loads(body)