Django Gunicorn Debug

первоначально у меня было приложение Django с включенным сервером тестирования. Чтобы отладить эту настройку, я могу просто добавить import pdb; pdb.set_trace() в любом месте кода и имеют точку останова, которая бросает меня в интерактивный отладчик в терминале (в командной строке).

недавно я перешел на gunicorn, чтобы получить некоторые преимущества perf. Как я могу получить подобное поведение при использовании этой настройки Gunicorn. Я попытался установить настройки gunicorn с помощью debug=True и daemon=False но это не работа.

кто-нибудь есть решение для этого?

5 ответов


чтобы запустить green unicorn в конфигурации обратного прокси (под nginx) в режиме отладчика / отладки, введите следующие параметры в PyCharm's Run / Django / Edit конфигурации:

конечно, используйте любой порт (вместо 7777) настройки nginx для прокси-сервера.

Screenshot


Ок я недавно stumbed на подобную проблему. Я не смог применить решение @dudklein (я получаю ошибки ввода - вывода, когда отладчик пытается взять input-ipdb, pdb и т. д.)

я использовал удаленный python debbuger -winpdb и встроенные отладки.

  1. установите winpdb в virtualenv

    pip install winpdb
    
  2. импорт и запуск встроенного отладчика в код:

    import rpdb2
    rpdb2.start_embedded_debugger('pass')
    
  3. запустите gunicorn с аргументом -- timeout

    gunicorn -t 3600 env:application
    
  4. выполнить надлежащий вид, используя браузер, например. http://127.0.0.1:8000/your-view/

  5. подключение к встроенному отладчику с помощью winpdb:

    winpdb -a /path/to/django/app/views.py
    

    он предложит вам пароль (используйте тот, который вы установили в своем коде, в моем примере это "pass") и запустите хороший GUI с отладчиком.

  6. если вам нужен учебник для winpdb - здесь вы are.

enter image description here


если вы можете запустить gunicorn, указывая на application экземпляра, экземпляр DebuggedApplication класс werkzeug библиотека, вы сможете установить точки останова с помощью отладчика werkzeug с import ipdb; ipdb.set_trace() прямо в вашем браузере.

import django.core.handlers.wsgi
from werkzeug.debug import DebuggedApplication

application = django.core.handlers.wsgi.WSGIHandler()
application = DebuggedApplication(application, evalex=True)

убедитесь, что вы установили библиотеку werkzeug и ipdb, конечно. (pip install werkzeug и pip install ipdb)


теперь мне удалось использовать gunicron с djnago и ipdb.

run python -m ipdb manage.py run_gunicorn --debug -t 3600

Я использую Django 1.4 и gunicorn 0.16.1. тогда вы можете нормально использовать import ipdb; ipdb.set_trace() в коде. Нет необходимости в werkzeug библиотека.

Я пытаюсь отладить приложение facebook, поэтому я не могу использовать build in development server, потому что facebook пытается использовать SSL, а dev-сервер просто не может ответить должным образом

пока я искал решение, я нашел пост pdb: использование отладчика Python в Django это предлагает запустить python -m pdb manage.py runserver все время. Хотя это не обязательно с dev-сервером django, я решил попробовать с gunicordn и ipdb, и это сработало.


то, что я, наконец, закончил, это run python manage.py runserver <your_external_IP>:8000 когда я хочу использовать pdb.

таким образом, вам нужно иметь 2 разных репозитория на одной машине, один из которых является Live production build (тот, который работает gunicorn), а другой-тестовая сборка, которую мне нужно отлаживать там, где я использую pdb. Когда вещи кажутся стабильными на тестовой сборке, я объединяю TEST branch С LIVE branch. Никаких изменений или изменений не происходит на LIVE branch таким образом, я избегаю конфликтов слияния.

надеюсь, это помогает другим, кто зависим от pdb ;)