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

Request History does not work with Channels #1413

Open
KStenK opened this issue Nov 30, 2020 · 15 comments
Open

Request History does not work with Channels #1413

KStenK opened this issue Nov 30, 2020 · 15 comments

Comments

@KStenK
Copy link

KStenK commented Nov 30, 2020

Hello,

I remember in the past at one point I got the request history panel working, but now if I need to use it, it won't work.

On the front end I have enabled:
History, Versions, Time, and SQL panels.

Now if I click on the History tab, then there no rows.
And if i click on the Refresh button, i get 400 error:
image

I have no idea what I am doing wrong or how to troubleshoot that problem.
Any suggestions, what should I try next?

Dependencies:
Django==3.1.3
django_debug_toolbar==3.1.1

Edited:

Environment:
Docker python:3.9.0-slim

Configuration:

settings.base.py

DJANGO_APPS = [
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles'
]
LOCAL_APPS = [
 . . .
]
THIRD_PARTY_APPS = [
    'channels',
    'rest_framework',
    'axes'
]

INSTALLED_APPS = DJANGO_APPS + LOCAL_APPS + THIRD_PARTY_APPS


MIDDLEWARE = [
    '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',
    'axes.middleware.AxesMiddleware' 
]

settings.development.py

import socket

from .base import *

DEBUG = True

AXES_ENABLED = False

# django-debug-toolbar
MIDDLEWARE += ["debug_toolbar.middleware.DebugToolbarMiddleware"]
hostname, _, ips = socket.gethostbyname_ex(socket.gethostname())
INTERNAL_IPS = [ip[:-1] + '1' for ip in ips] + ['127.0.0.1', '10.0.2.2']
INSTALLED_APPS += ["debug_toolbar"]

. . .
@folt
Copy link
Contributor

folt commented Dec 1, 2020

Can you share your app settings?

@KStenK
Copy link
Author

KStenK commented Dec 1, 2020

Can you share your app settings?

Updated the issue with some configuration.
Is there anything specific you would like to know?

@folt
Copy link
Contributor

folt commented Dec 1, 2020

There is a support request for python 3.9.
Is there an error remaining if I downgrade it?

@matthiask
Copy link
Member

I'm using Python 3.9 as well, I don't think Python is the problem here. I have no idea what the problem might be :/

@KStenK
Copy link
Author

KStenK commented Dec 1, 2020

In the 400 response error, there is 'Form errors'.
image

@folt
Copy link
Contributor

folt commented Dec 1, 2020

Do you have applications installed in your browser that can interfere with the execution of javascript on the page?
There is also a possibility that the page may contain your scripts from the template that can break the panel.
I do not see similar problems with the given configuration.

@KStenK
Copy link
Author

KStenK commented Dec 1, 2020

Do you have applications installed in your browser that can interfere with the execution of javascript on the page?
There is also a possibility that the page may contain your scripts from the template that can break the panel.
I do not see similar problems with the given configuration.

I have tried with different browsers and even on the empty HTML page that occurs.
That is in Fetch init:
image

Looking at the history refresh view, I see that form is not validating, that's why I get 400 error, but why it is not validating...

@folt
Copy link
Contributor

folt commented Dec 2, 2020

Screenshot_20201202_123949

I came across just such a message.
But the problems with the refresh could not be repeated.

@KStenK
Copy link
Author

KStenK commented Dec 2, 2020

Okei, I found the source of the problem.
I have installed the channels==3.0.2 package too and if I have channels configured, then runserver command automatically starts the ASGI server and I think that is where the problem lays...
Without channels in the INSTALLED_APPS, everything works again.

@tim-schilling
Copy link
Contributor

Thanks for following up with that information @KStenK!

@KStenK
Copy link
Author

KStenK commented Dec 8, 2020

Should I close that ticket or hold it open for any reason?

@tim-schilling tim-schilling changed the title Request History do not work Request History does not work with Channels Dec 9, 2020
@tim-schilling
Copy link
Contributor

Keep it open for now until someone can investigate the issue more fully. I changed the title to be more explicit about the actual cause of this problem to help others identify problems. If you want to dig into why channels and the toolbar aren't working well you're more than welcome to.

@tim-schilling
Copy link
Contributor

@KStenK You can get the request history panel to work with channels by setting RENDER_PANELS to False. The names of the functions and settings seems to be off here. The problem is that channels is setting request.META["wsgi.multiprocess"] to True. By configuring RENDER_PANELS to False, you'll bypass that.

@tim-schilling
Copy link
Contributor

@KStenK There's definitely a chance that the toolbar will not work with channels given it runs with multiple processes and the toolbar's data is stored in memory.

@areebbeigh
Copy link

@KStenK There's definitely a chance that the toolbar will not work with channels given it runs with multiple processes and the toolbar's data is stored in memory.

Just an aside: I was getting this error without channels with a nginx <-> uwsgi <-> django deployment. Reducing the number of processes to 1 in the uwsgi config solved it. Thanks for pointing this out, maybe it should be in the getting started docs somewhere?

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

No branches or pull requests

5 participants