def _process_response(self, request, response): Logger.debug('Process response') with silk_meta_profiler(): collector = DataCollector() collector.stop_python_profiler() silk_request = collector.request if silk_request: silk_request = self.edit_request_model_function(silk_request, request) silk_response = ResponseModelFactory(response).construct_response_model() silk_response.save() silk_request.end_time = timezone.now() collector.finalise() else: Logger.error( 'No request model was available when processing response. ' 'Did something go wrong in process_request/process_view?' '\n' + str(request) + '\n\n' + str(response) ) # Need to save the data outside the silk_meta_profiler # Otherwise the meta time collected in the context manager # is not taken in account if silk_request: silk_request.save() Logger.debug('Process response done.')
def process_response(self, request, response): if _should_intercept(request): collector = DataCollector() content_type = response.get('Content-Type', '').split(';')[0] silk_request = collector.request if silk_request: Logger.debug( 'Creating response model for request model with pk %s' % silk_request.pk) body = '' if content_type in content_types_json: # TODO: Perhaps theres a way to format the JSON without parsing it? try: content = response.content try: # py3 content = content.decode('UTF-8') except AttributeError: # py2 pass body = json.dumps(json.loads(content), sort_keys=True, indent=4) except (TypeError, ValueError): Logger.warn( 'Response to request with pk %s has content type %s but was unable to parse it' % (silk_request.pk, content_type)) raw_headers = response._headers headers = {} for k, v in raw_headers.items(): try: header, val = v except ValueError: header, val = k, v finally: headers[header] = val content = response.content silky_response = models.Response.objects.create( request=silk_request, status_code=response.status_code, encoded_headers=json.dumps(headers), body=body) try: silky_response.raw_body = content silky_response.save() except DjangoUnicodeDecodeError: Logger.debug('NYI: Saving of binary response body') # TODO silk_request.end_time = timezone.now() silk_request.save() collector.finalise() else: Logger.error( 'No request model was available when processing response. Did something go wrong in process_request/process_view?' ) return response
def _process_response(self, response): with silk_meta_profiler(): collector = DataCollector() silk_request = collector.request if silk_request: silk_response = ResponseModelFactory(response).construct_response_model() silk_response.save() silk_request.end_time = timezone.now() collector.finalise() silk_request.save() else: Logger.error('No request model was available when processing response. Did something go wrong in process_request/process_view?')
def _process_response(self, request, response): with silk_meta_profiler(): collector = DataCollector() collector.stop_python_profiler() silk_request = collector.request if silk_request: silk_request.end_time = timezone.now() collector.finalise() if response.accepted_media_type == 'application/json': response['num_sql_queries'] = silk_request.num_sql_queries response[ 'time_spent_on_sql_queries'] = silk_request.time_spent_on_sql_queries response['time_taken'] = silk_request.time_taken
def _process_response(self, response): with silk_meta_profiler(): collector = DataCollector() collector.stop_python_profiler() silk_request = collector.request if silk_request: silk_response = ResponseModelFactory( response).construct_response_model() silk_response.save() silk_request.end_time = timezone.now() collector.finalise() silk_request.save() else: Logger.error( 'No request model was available when processing response. Did something go wrong in process_request/process_view?' )
def _process_response(self, response): with silk_meta_profiler(): collector = DataCollector() collector.stop_python_profiler() silk_request = collector.request if silk_request: try: silk_response = ResponseModelFactory(response).construct_response_model() except IntegrityError: raise #collector.finalise() else: silk_response.save() silk_request.end_time = datetime.datetime.now() collector.finalise() silk_request.save() else: Logger.error('No request model was available when processing response. Did something go wrong in process_request/process_view?')
def process_response(self, request, response): if _should_intercept(request): collector = DataCollector() content_type = response.get('Content-Type', '').split(';')[0] silk_request = collector.request if silk_request: Logger.debug('Creating response model for request model with pk %s' % silk_request.pk) body = '' if content_type in content_types_json: # TODO: Perhaps theres a way to format the JSON without parsing it? try: content = response.content try: # py3 content = content.decode('UTF-8') except AttributeError: # py2 pass body = json.dumps(json.loads(content), sort_keys=True, indent=4) except (TypeError, ValueError): Logger.warn('Response to request with pk %s has content type %s but was unable to parse it' % (silk_request.pk, content_type)) raw_headers = response._headers headers = {} for k, v in raw_headers.items(): try: header, val = v except ValueError: header, val = k, v finally: headers[header] = val content = response.content silky_response = models.Response.objects.create(request=silk_request, status_code=response.status_code, encoded_headers=json.dumps(headers), body=body) try: silky_response.raw_body = content silky_response.save() except DjangoUnicodeDecodeError: Logger.debug('NYI: Saving of binary response body') # TODO silk_request.end_time = timezone.now() silk_request.save() collector.finalise() else: Logger.error('No request model was available when processing response. Did something go wrong in process_request/process_view?') return response
def process_response(self, request, response): if _should_intercept(request): meta_start_time = None if SilkyConfig().SILKY_META: meta_start_time = timezone.now() collector = DataCollector() silk_request = collector.request if silk_request: silk_response = ResponseModelFactory(response).construct_response_model() silk_response.save() silk_request.end_time = timezone.now() collector.finalise() if SilkyConfig().SILKY_META: meta_end_time = timezone.now() silk_request.meta_start_time = meta_start_time silk_request.meta_end_time = meta_end_time silk_request.save() else: Logger.error('No request model was available when processing response. Did something go wrong in process_request/process_view?') return response
def _process_response(self, response): Logger.debug('Process response') with silk_meta_profiler(): collector = DataCollector() collector.stop_python_profiler() silk_request = collector.request if silk_request: silk_response = ResponseModelFactory(response).construct_response_model() silk_response.save() silk_request.end_time = timezone.now() collector.finalise() else: Logger.error( 'No request model was available when processing response. Did something go wrong in process_request/process_view?') # Need to save the data outside the silk_meta_profiler # Otherwise the meta time collected in the context manager # is not taken in account if silk_request: silk_request.save() Logger.debug('Process response done.')
def process_response(self, request, response): if _should_intercept(request): meta_start_time = None if SilkyConfig().SILKY_META: meta_start_time = timezone.now() collector = DataCollector() silk_request = collector.request if silk_request: silk_response = ResponseModelFactory( response).construct_response_model() silk_response.save() silk_request.end_time = timezone.now() collector.finalise() if SilkyConfig().SILKY_META: meta_end_time = timezone.now() silk_request.meta_start_time = meta_start_time silk_request.meta_end_time = meta_end_time silk_request.save() else: Logger.error( 'No request model was available when processing response. Did something go wrong in process_request/process_view?' ) return response