问题描述
我正在OSX 10.15.3上运行带有runserver的Django 3.0.3版本.使用我的应用程序没问题,但是当我尝试访问 http://localhost:8000/admin/容器时崩溃并显示为退出,代码为245"我在Docker日志中什么也没有,看起来像是python问题,不知道如何调试.谢谢文件文件:
I am running Django version 3.0.3 with runserver on OSX 10.15.3.With my app no problem but when I try to access http://localhost:8000/admin/ the container crash with "exited with code 245"I have nothing more in Docker logs, looks like a python problem, any idea how to debug.ThanksDokerfile :
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN apt-get update && apt-get -y install locales
COPY locale.gen /etc/
RUN locale-gen fr_FR.UTF-8
ENV LANG fr_FR.UTF-8
ENV LANGUAGE fr_FR:fr
ENV LC_ALL fr_FR.UTF-8
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
ADD . /code/
docker-compose:
docker-compose :
version: '3'
services:
db:
image: postgres
volumes:
- xxx
redis:
image: "redis:latest"
command: redis-server --requirepass xxx
ports:
- '6379:6379'
web:
build : .
command: python3 -u manage.py runserver_plus --nopin 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
- redis
environment:
- PYTHONUNBUFFERED=1
external_links:
- scodoc:scodoc
celery:
build : .
command: celery -A cobalt worker -l info
volumes:
- .:/code
depends_on:
- db
- redis
networks:
default:
external:
name: test
log:
web_1 | Performing system checks...
web_1 |
web_1 | System check identified no issues (0 silenced).
web_1 |
web_1 | Django version 3.0.3, using settings 'cobalt.settings'
web_1 | Development server is running at http://0.0.0.0:8000/
web_1 | Using the Werkzeug debugger (http://werkzeug.pocoo.org/)
web_1 | Quit the server with CONTROL-C.
web_1 | * Debugger is active!
web_1 | * Debugger PIN disabled. DEBUGGER UNSECURED!
cobalt_web_1 exited with code 245
经过一些调试后,问题似乎出在django/django/core/handlers/base.py 143 response = response.render()
EDIT : After some debuging, the problem seems coming fromdjango/django/core/handlers/base.py 143 response = response.render()
也许是因为循环线132的self._template_response_middleware为空
Maybe because self._template_response_middleware is empty for the loop line 132
MIDDLEWARE = [
'debug_toolbar.middleware.DebugToolbarMiddleware',
'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',
'cobalt.middleware.StoreAnnee',
'reversion.middleware.RevisionMiddleware',
]
似乎未调用load_middleware base.py(23),因此self._template_response_middleware为空.当我使用localhost:8000访问我的应用程序时,一切正常,问题仅在于localhost:8000/admin.我用print调试,这是更好的方法吗?我尝试Pdb成功,在这种情况下Werkzeug什么也不给.
EDIT 3 : It seems that load_middleware base.py(23) is not called, hence self._template_response_middleware is empty.Everything is working fine when I access my app with localhost:8000, the problem is only for localhost:8000/admin.I debug with print, is it a better way ? I try Pdb whitout success, Werkzeug give nothing in this case.
使用PYTHONFAULTHANDLER 1登录
EDIT 4 : log with PYTHONFAULTHANDLER 1
16 File "/usr/local/lib/python3.7/site-packages/django/utils/safestring.py", line 63 in mark_safe
17 File "/usr/local/lib/python3.7/site-packages/django/template/base.py", line 781 in __init__
18 File "/usr/local/lib/python3.7/site-packages/django/templatetags/i18n.py", line 77 in __init__
19 File "/usr/local/lib/python3.7/site-packages/django/templatetags/i18n.py", line 406 in do_translate
20 File "/usr/local/lib/python3.7/site-packages/django/template/base.py", line 475 in parse
21 File "/usr/local/lib/python3.7/site-packages/django/template/loader_tags.py", line 209 in do_block
22 File "/usr/local/lib/python3.7/site-packages/django/template/base.py", line 475 in parse
23 File "/usr/local/lib/python3.7/site-packages/django/template/loader_tags.py", line 266 in do_extends
24 File "/usr/local/lib/python3.7/site-packages/django/template/base.py", line 475 in parse
25 File "/usr/local/lib/python3.7/site-packages/django/template/base.py", line 194 in compile_nodelist
26 File "/usr/local/lib/python3.7/site-packages/django/template/base.py", line 156 in __init__
27 File "/usr/local/lib/python3.7/site-packages/django/template/loaders/base.py", line 30 in get_template
28 File "/usr/local/lib/python3.7/site-packages/django/template/engine.py", line 125 in find_template
29 File "/usr/local/lib/python3.7/site-packages/django/template/engine.py", line 143 in get_template
30 File "/usr/local/lib/python3.7/site-packages/django/template/backends/django.py", line 34 in get_template
31 File "/usr/local/lib/python3.7/site-packages/django/template/loader.py", line 15 in get_template
32 File "/usr/local/lib/python3.7/site-packages/django/template/response.py", line 65 in resolve_template
33 File "/usr/local/lib/python3.7/site-packages/django/template/response.py", line 81 in rendered_content
34 File "/usr/local/lib/python3.7/site-packages/django/template/response.py", line 105 in render
35 File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py", line 143 in _get_response
36 File "/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34 in inner
37 File "/usr/local/lib/python3.7/site-packages/django/utils/deprecation.py", line 94 in __call__
38 File "/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34 in inner
39 File "/usr/local/lib/python3.7/site-packages/reversion/views.py", line 44 in do_revision_view
40 File "/usr/local/lib/python3.7/site-packages/reversion/middleware.py", line 26 in __call__
41 File "/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34 in inner
42 File "/code/cobalt/middleware.py", line 18 in __call__
43 File "/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34 in inner
44 File "/usr/local/lib/python3.7/site-packages/django/utils/deprecation.py", line 94 in __call__
45 File "/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34 in inner
46 File "/usr/local/lib/python3.7/site-packages/django/utils/deprecation.py", line 94 in __call__
47 File "/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34 in inner
48 File "/usr/local/lib/python3.7/site-packages/django/utils/deprecation.py", line 94 in __call__
49 File "/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34 in inner
50 File "/usr/local/lib/python3.7/site-packages/django/utils/deprecation.py", line 94 in __call__
51 File "/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34 in inner
52 File "/usr/local/lib/python3.7/site-packages/django/utils/deprecation.py", line 94 in __call__
53 File "/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34 in inner
54 File "/usr/local/lib/python3.7/site-packages/django/utils/deprecation.py", line 94 in __call__
55 File "/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34 in inner
56 File "/usr/local/lib/python3.7/site-packages/django/utils/deprecation.py", line 94 in __call__
57 File "/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34 in inner
58 File "/usr/local/lib/python3.7/site-packages/debug_toolbar/panels/__init__.py", line 174 in process_request
59 File "/usr/local/lib/python3.7/site-packages/debug_toolbar/panels/logging.py", line 77 in process_request
60 File "/usr/local/lib/python3.7/site-packages/debug_toolbar/panels/__init__.py", line 174 in process_request
61 File "/usr/local/lib/python3.7/site-packages/debug_toolbar/panels/__init__.py", line 174 in process_request
62 File "/usr/local/lib/python3.7/site-packages/debug_toolbar/panels/__init__.py", line 174 in process_request
63 File "/usr/local/lib/python3.7/site-packages/debug_toolbar/panels/__init__.py", line 174 in process_request
64 File "/usr/local/lib/python3.7/site-packages/debug_toolbar/panels/staticfiles.py", line 115 in process_request
65 File "/usr/local/lib/python3.7/site-packages/debug_toolbar/panels/__init__.py", line 174 in process_request
66 File "/usr/local/lib/python3.7/site-packages/debug_toolbar/panels/__init__.py", line 174 in process_request
67 File "/usr/local/lib/python3.7/site-packages/debug_toolbar/panels/__init__.py", line 174 in process_request
68 File "/usr/local/lib/python3.7/site-packages/debug_toolbar/panels/headers.py", line 50 in process_request
9 File "/usr/local/lib/python3.7/site-packages/debug_toolbar/panels/__init__.py", line 174 in process_request
70 File "/usr/local/lib/python3.7/site-packages/debug_toolbar/panels/__init__.py", line 174 in process_request
71 File "/usr/local/lib/python3.7/site-packages/debug_toolbar/panels/timer.py", line 58 in process_request
72 File "/usr/local/lib/python3.7/site-packages/debug_toolbar/panels/__init__.py", line 174 in process_request
73 File "/usr/local/lib/python3.7/site-packages/debug_toolbar/middleware.py", line 61 in __call__
74 File "/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34 in inner
75 File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py", line 75 in get_response
76 File "/usr/local/lib/python3.7/site-packages/django/core/handlers/wsgi.py", line 133 in __call__
77 File "/usr/local/lib/python3.7/site-packages/django/contrib/staticfiles/handlers.py", line 68 in __call__
78 File "/usr/local/lib/python3.7/site-packages/werkzeug/debug/__init__.py", line 304 in debug_application
79 File "/usr/local/lib/python3.7/site-packages/werkzeug/serving.py", line 314 in execute
80 File "/usr/local/lib/python3.7/site-packages/werkzeug/serving.py", line 323 in run_wsgi
81 File "/usr/local/lib/python3.7/site-packages/werkzeug/serving.py", line 379 in handle_one_request
82 File "/usr/local/lib/python3.7/http/server.py", line 426 in handle
83 File "/usr/local/lib/python3.7/site-packages/werkzeug/serving.py", line 345 in handle
84 File "/usr/local/lib/python3.7/socketserver.py", line 717 in __init__
85 File "/usr/local/lib/python3.7/socketserver.py", line 357 in finish_request
86 File "/usr/local/lib/python3.7/socketserver.py", line 647 in process_request_thread
87 File "/usr/local/lib/python3.7/threading.py", line 865 in run
88 File "/usr/local/lib/python3.7/threading.py", line 917 in _bootstrap_inner
89 File "/usr/local/lib/python3.7/threading.py", line 885 in _bootstrap
90
91 Thread 0x00007fb148b58700 (most recent call first):
92 File "/usr/local/lib/python3.7/selectors.py", line 415 in select
93 File "/usr/local/lib/python3.7/socketserver.py", line 232 in serve_forever
94 File "/usr/local/lib/python3.7/site-packages/werkzeug/serving.py", line 777 in serve_forever
95 File "/usr/local/lib/python3.7/site-packages/werkzeug/serving.py", line 1009 in inner
96 File "/usr/local/lib/python3.7/threading.py", line 865 in run
97 File "/usr/local/lib/python3.7/threading.py", line 917 in _bootstrap_inner
98 File "/usr/local/lib/python3.7/threading.py", line 885 in _bootstrap
99
00 Thread 0x00007fb157d1c700 (most recent call first):
01 File "/usr/local/lib/python3.7/site-packages/werkzeug/_reloader.py", line 214 in run
02 File "/usr/local/lib/python3.7/site-packages/werkzeug/_reloader.py", line 337 in run_with_reloader
03 File "/usr/local/lib/python3.7/site-packages/werkzeug/serving.py", line 1050 in run_simple
04 File "/usr/local/lib/python3.7/site-packages/django_extensions/management/commands/runserver_plus.py", line 345 in inner_run
05 File "/usr/local/lib/python3.7/site-packages/django_extensions/management/commands/runserver_plus.py", line 218 in handle
06 File "/usr/local/lib/python3.7/site-packages/django_extensions/management/utils.py", line 62 in inner
07 File "/usr/local/lib/python3.7/site-packages/django/core/management/base.py", line 369 in execute
08 File "/usr/local/lib/python3.7/site-packages/django/core/management/base.py", line 328 in run_from_argv
09 File "/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py", line 395 in execute
10 File "/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py", line 401 in execute_from_command_line
11 File "/code/manage.py", line 15 in <module>
我的代码带有错误代码/middleware.py
EDIT 5 : my code with error code/middleware.py
1 from base.models import Parametre
2 class StoreAnnee:
3 def __init__(self, get_response):
4 self.get_response = get_response
5 # One-time configuration and initialization.
6
7 def __call__(self, request):
8 # Code to be executed for each request before
9 # the view (and later middleware) are called.
10 if request.path == '/accounts/login/' and request.method == 'POST':
11 try:
12 parametre = Parametre.objects.get(pk=1)
13 request.session['annee'] = parametre.annee_en_cours.id
14 request.session['annee_code'] = parametre.annee_en_cours.code
15 except Parametre.DoesNotExist:
16 pass
17 response = self.get_response(request)
18
19 return response
推荐答案
我回答了我自己的问题,
I answer my own questions,
通过PYTHONMALLOC调试可以正常工作: https://bugs.python.org/issue34087 不要问为什么.
With PYTHONMALLOC debug it's working : https://bugs.python.org/issue34087Don't ask why.
这篇关于为什么Docker Django admin崩溃并显示代码245的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!