import pdb; pdb.set_trace()
,从而在终端(命令行)中进入交互式调试器。
最近我转向使用gunicorn以获得一些性能上的优势。在使用这个Gunicorn设置时,如何获得类似的行为呢?我尝试通过使用debug=True
和daemon=False
来设置gunicorn设置,但它不起作用。
是否有人有解决方法呢?
import pdb; pdb.set_trace()
,从而在终端(命令行)中进入交互式调试器。
最近我转向使用gunicorn以获得一些性能上的优势。在使用这个Gunicorn设置时,如何获得类似的行为呢?我尝试通过使用debug=True
和daemon=False
来设置gunicorn设置,但它不起作用。
是否有人有解决方法呢?
pdb
,而不是PyCharm的GUI来进行调试。 - WhyNotHugo我最近遇到了类似的问题。我无法应用@dudklein的解决方案(当调试器尝试获取输入 - ipdb、pdb等时,我会遇到I/O错误)。
我使用了远程Python调试器 - winpdb和它的嵌入式调试。
install winpdb in Your virtualenv
pip install winpdb
import and run embedded debugger in Your code:
import rpdb2
rpdb2.start_embedded_debugger('pass')
run gunicorn with --timeout argument
gunicorn -t 3600 env:application
run proper view using browser eg. http://127.0.0.1:8000/your-view/
connect to embedded debugger using winpdb:
winpdb -a /path/to/django/app/views.py
It will prompt You for a password (use one You set in Your code, in my example it is 'pass') and run nice GUI with debugger.
if You need tutorial for winpdb
- here You are.
如果您能够启动gunicorn并指向一个application
实例,该实例是werkzeug
库中的DebuggedApplication
类的实例,那么您就可以在浏览器中使用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
)
我现在成功地使用gunicorn和ipdb来运行Django。
运行命令python -m ipdb manage.py run_gunicorn --debug -t 3600
我使用的是Django 1.4和gunicorn 0.16.1。然后您可以在代码中正常使用import ipdb; ipdb.set_trace()
。不需要使用werkzeug
库。
我正在尝试调试Facebook应用程序,因此无法使用内置的开发服务器,因为Facebook尝试使用SSL,而开发服务器无法正确响应。
在寻找解决方案时,我发现了一篇文章pdb:在Django中使用Python调试器建议始终运行python -m pdb manage.py runserver
。虽然这在django的开发服务器上不是必要的,但我决定尝试一下gunicorn和ipdb,结果成功了。
python manage.py runserver <your_external_IP>:8000
。gunicorn
的版本),另一个是TEST版本,我需要在其中调试并使用pdb
的版本。当TEST版本稳定后,我将TEST分支
与LIVE分支
合并。没有在LIVE分支
上进行开发或更改,这样可以避免合并冲突。pdb
的人;)