Django Gunicorn调试

时间:2012-11-03 15:42:45

标签: django debugging wsgi gunicorn pdb

最初,我有一个包含测试服务器的Django应用程序。要调试此设置,我只需在代码中的任何位置添加import pdb; pdb.set_trace(),并有一个断点,将我引入终端中的交互式调试器(在命令行上)。

最近我转移到了gunicorn以获得一些优势。使用此Gunicorn设置时,如何获得类似的行为。我尝试过用debug=Truedaemon=False设置gunicorn设置,但它不起作用。

任何人都有解决方案吗?

5 个答案:

答案 0 :(得分:3)

要在调试器/调试模式下以反向代理配置(在nginx下)运行绿色独角兽,请在PyCharm的运行/ Django /编辑配置中输入以下设置:

当然,使用您已配置nginx代理的任何端口(而不是7777)。

Screenshot

答案 1 :(得分:3)

好的,我最近似乎遇到了类似的问题。我无法应用@dudklein解决方案(我在调试器试图接受输入时得到I / O错误 - ipdb,pdb等。)

我使用了远程python debbuger - winpdb及其embedded debugging

  1. 在你的virtualenv中安装winpdb

    pip install winpdb
    
  2. 在您的代码中导入并运行嵌入式调试器:

    import rpdb2
    rpdb2.start_embedded_debugger('pass')
    
  3. 使用--timeout参数运行gunicorn

    gunicorn -t 3600 env:application
    
  4. 使用浏览器运行正确的视图,例如。 http://127.0.0.1:8000/your-view/

  5. 使用winpdb连接到嵌入式调试器:

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

    它会提示您输入密码(使用您在代码中设置的密码,在我的示例中它是'传递')并使用调试器运行良好的GUI。

  6. 如果您需要winpdb - here You are的教程。

  7. enter image description here

答案 2 :(得分:2)

如果您能够从application库启动指向DebuggedApplicationwerkzeug类实例的gunicorn,您将能够使用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 werkzeugpip install ipdb

答案 3 :(得分:2)

我现在设法使用gunnron与djnago和ipdb。

运行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: Using the Python debugger in Django帖子,建议始终运行python -m pdb manage.py runserver。虽然django的dev服务器没有必要这样做,但我决定尝试使用gunicordn和ipdb,并且它有效。

答案 4 :(得分:0)

当我想使用python manage.py runserver <your_external_IP>:8000时,我最终做的是运行pdb

所以你需要在同一台机器上有两个不同的存储库,一个是LIVE生产版本(一个运行gunicorn),另一个是TEST版本,我需要在我使用的地方进行调试{ {1}}。当TEST构建中的事情看起来稳定时,我将pdbTEST branch合并。 LIVE branch没有任何开发或更改发生,我避免了合并冲突。

希望这可以帮助那些沉迷于LIVE branch;)

的人