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 для прокси-сервера.
Ок я недавно stumbed на подобную проблему. Я не смог применить решение @dudklein (я получаю ошибки ввода - вывода, когда отладчик пытается взять input-ipdb, pdb и т. д.)
я использовал удаленный python debbuger -winpdb и встроенные отладки.
-
установите winpdb в virtualenv
pip install winpdb
-
импорт и запуск встроенного отладчика в код:
import rpdb2 rpdb2.start_embedded_debugger('pass')
-
запустите gunicorn с аргументом -- timeout
gunicorn -t 3600 env:application
выполнить надлежащий вид, используя браузер, например.
http://127.0.0.1:8000/your-view/
-
подключение к встроенному отладчику с помощью winpdb:
winpdb -a /path/to/django/app/views.py
он предложит вам пароль (используйте тот, который вы установили в своем коде, в моем примере это "pass") и запустите хороший GUI с отладчиком.
если вам нужен учебник для
winpdb
- здесь вы are.
если вы можете запустить 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
;)