django-silk
django-silk copied to clipboard
RecursionError
Hi folks,
thanks a lot for this great tool!
When use it in drf project got RecursionError after some time. More deeper analysis showed that some functions get called recursively more and more times and after standard recursion depth = 1000 we see error 500.
Restarting of python manage.py runserver
Resets this "counter".
What can it be?
2022-12-17 13:00:35,666-ERROR-catalog_logger::middleware|56:: [email protected] GET /api/catalogs/medicine_groups/ occurred exception
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/silk/profiling/profiler.py", line 161, in wrapped_target
result = target(*args, **kwargs)
File "/usr/local/lib/python3.10/site-packages/silk/profiling/profiler.py", line 159, in wrapped_target
self._start_queries()
File "/usr/local/lib/python3.10/site-packages/silk/profiling/profiler.py", line 78, in _start_queries
self._queries_before = self._query_identifiers_from_collector()
File "/usr/local/lib/python3.10/site-packages/silk/profiling/profiler.py", line 74, in _query_identifiers_from_collector
return [x for x in DataCollector().queries]
File "/usr/local/lib/python3.10/site-packages/silk/collector.py", line 68, in queries
return self._get_objects(TYP_QUERIES)
File "/usr/local/lib/python3.10/site-packages/silk/collector.py", line 75, in _get_objects
objects = self.objects
File "/usr/local/lib/python3.10/site-packages/silk/collector.py", line 64, in objects
return getattr(self.local, 'objects', None)
RecursionError: maximum recursion depth exceeded in comparison
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/rest_framework/views.py", line 506, in dispatch
response = handler(request, *args, **kwargs)
File "/opt/app/utils/mixins.py", line 74, in list
return super().list(request, *args, **kwargs)
File "/usr/local/lib/python3.10/site-packages/silk/profiling/profiler.py", line 161, in wrapped_target
result = target(*args, **kwargs)
File "/usr/local/lib/python3.10/site-packages/silk/profiling/profiler.py", line 161, in wrapped_target
result = target(*args, **kwargs)
File "/usr/local/lib/python3.10/site-packages/silk/profiling/profiler.py", line 161, in wrapped_target
result = target(*args, **kwargs)
[Previous line repeated 941 more times]
File "/usr/local/lib/python3.10/site-packages/silk/profiling/profiler.py", line 168, in wrapped_target
self._finalise_queries()
File "/usr/local/lib/python3.10/site-packages/silk/profiling/profiler.py", line 109, in _finalise_queries
self._end_queries()
File "/usr/local/lib/python3.10/site-packages/silk/profiling/profiler.py", line 82, in _end_queries
self._queries_after = self._query_identifiers_from_collector()
File "/usr/local/lib/python3.10/site-packages/silk/profiling/profiler.py", line 74, in _query_identifiers_from_collector
return [x for x in DataCollector().queries]
File "/usr/local/lib/python3.10/site-packages/silk/collector.py", line 68, in queries
return self._get_objects(TYP_QUERIES)
File "/usr/local/lib/python3.10/site-packages/silk/collector.py", line 75, in _get_objects
objects = self.objects
File "/usr/local/lib/python3.10/site-packages/silk/collector.py", line 64, in objects
return getattr(self.local, 'objects', None)
RecursionError: maximum recursion depth exceeded in comparison
Can dynamic profiling of generic DRF views mixins be involdev?
SILKY_DYNAMIC_PROFILING = [
{
'module': 'rest_framework.mixins.RetrieveModelMixin',
'function': 'retrieve'
},
{
'module': 'rest_framework.mixins.CreateModelMixin',
'function': 'create'
},
{
'module': 'rest_framework.mixins.ListModelMixin',
'function': 'list'
},
{
'module': 'rest_framework.mixins.UpdateModelMixin',
'function': 'update'
},
{
'module': 'rest_framework.mixins.DestroyModelMixin',
'function': 'destroy'
},
]