Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RecursionError #633

Open
sergun opened this issue Dec 17, 2022 · 0 comments
Open

RecursionError #633

sergun opened this issue Dec 17, 2022 · 0 comments

Comments

@sergun
Copy link

sergun commented Dec 17, 2022

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:: sergun@gmail.com 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'
    },
]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant