本文介绍了为什么Docker Django admin崩溃并显示代码245的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-26 21:52