Ejemplo n.º 1
0
    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.')
Ejemplo n.º 2
0
 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
Ejemplo n.º 3
0
 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
Ejemplo n.º 5
0
 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?'
             )
Ejemplo n.º 6
0
 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?')
Ejemplo n.º 7
0
 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
Ejemplo n.º 8
0
 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
Ejemplo n.º 9
0
 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.')
Ejemplo n.º 10
0
 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