From e3649cbca0026e3448c73c12394ee3d390a05820 Mon Sep 17 00:00:00 2001 From: Iker Zabala Date: Wed, 17 Sep 2025 11:56:58 +0200 Subject: [PATCH] use with context at runtime --- silk/middleware.py | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/silk/middleware.py b/silk/middleware.py index 3cbc1129..539c6b98 100644 --- a/silk/middleware.py +++ b/silk/middleware.py @@ -143,29 +143,29 @@ def process_request(self, request): request_model = RequestModelFactory(request).construct_request_model() DataCollector().configure(request_model, should_profile=should_profile) - @transaction.atomic(using=router.db_for_write(models.SQLQuery)) def _process_response(self, request, response): - Logger.debug('Process response') - with silk_meta_profiler(): - collector = DataCollector() - collector.stop_python_profiler() - silk_request = collector.request + with transaction.atomic(using=router.db_for_write(models.SQLQuery)): + Logger.debug('Process response') + with silk_meta_profiler(): + collector = DataCollector() + collector.stop_python_profiler() + silk_request = collector.request + if silk_request: + ResponseModelFactory(response).construct_response_model() + 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: - ResponseModelFactory(response).construct_response_model() - 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.') + silk_request.save() + Logger.debug('Process response done.') def process_response(self, request, response): max_attempts = 2