django-silk icon indicating copy to clipboard operation
django-silk copied to clipboard

Silk + cacheops not working

Open tunecrew opened this issue 6 years ago • 1 comments

Env is Django 2.1.2 w/ uwsgi on Python 3.6 in the python alpine docker image. DB is MariaDB 10.3 in a different docker image.

Silk runs fine but if I enable cacheops I get the following error + traceback at /silk/ (cacheops works fine w/o silk)

FieldError at /silk/
Exception Type: | FieldError
Cannot compute Avg('num_queries'): 'num_queries' is an aggregate
/usr/local/lib/python3.6/site-packages/django/db/models/aggregates.py in resolve_expression, line 49

Environment:

Request Method: GET
Request URL: http://localhost:8000/silk/

Django Version: 2.1.2
Python Version: 3.6.6
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.humanize',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'countries',
 'cuser',
 'django_tables2',
 'mathfilters',
 'quartermixapp.apps.QuartermixappConfig',
 'silk',
 'qmlog',
 'cacheops',
 'django_celery_results']
Installed Middleware:
['silk.middleware.SilkyMiddleware',
 'django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']

Traceback:

File "/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py" in inner
  34.             response = get_response(request)

File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  126.                 response = self.process_exception_by_middleware(e, request)

File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  124.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/usr/local/lib/python3.6/site-packages/django/views/generic/base.py" in view
  68.             return self.dispatch(request, *args, **kwargs)

File "/usr/local/lib/python3.6/site-packages/django/views/generic/base.py" in dispatch
  88.         return handler(request, *args, **kwargs)

File "/usr/local/lib/python3.6/site-packages/django/utils/decorators.py" in _wrapper
  45.         return bound_method(*args, **kwargs)

File "/usr/local/lib/python3.6/site-packages/django/utils/decorators.py" in _wrapper
  45.         return bound_method(*args, **kwargs)

File "/usr/local/lib/python3.6/site-packages/silk/views/summary.py" in get
  78.         c = self._create_context(request)

File "/usr/local/lib/python3.6/site-packages/silk/views/summary.py" in _create_context
  59.         avg_overall_time = self._avg_num_queries(filters)

File "/usr/local/lib/python3.6/site-packages/silk/views/summary.py" in _avg_num_queries
  16.         queries__aggregate = models.Request.objects.filter(*filters).annotate(num_queries=Count('queries')).aggregate(num=Avg('num_queries'))

File "/usr/local/lib/python3.6/site-packages/cacheops/query.py" in aggregate
  312.             qs = self.clone().annotate(*args, **kwargs)

File "/usr/local/lib/python3.6/site-packages/django/db/models/query.py" in annotate
  1008.                 clone.query.add_annotation(annotation, alias, is_summary=False)

File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py" in add_annotation
  988.                                                    summarize=is_summary)

File "/usr/local/lib/python3.6/site-packages/django/db/models/aggregates.py" in resolve_expression
  49.                     raise FieldError("Cannot compute %s('%s'): '%s' is an aggregate" % (c.name, name, name))

Exception Type: FieldError at /silk/
Exception Value: Cannot compute Avg('num_queries'): 'num_queries' is an aggregate

tunecrew avatar Oct 16 '18 22:10 tunecrew

Also experiencing this. I commented out the "cacheops" in my INSTALLED_APPS as a temporary measure and silk now appears to work.

quorth0n avatar Feb 17 '19 21:02 quorth0n