10

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

最近我转向 gunicorn 以获得一些性能优势。使用此 Gunicorn 设置时如何获得类似的行为。我已经尝试通过设置 gunicorn 设置,debug=Truedaemon=False它不起作用。

有人对此有解决方案吗?

4

5 回答 5

5

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

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

截屏

于 2013-06-19T12:21:34.497 回答
4

好的,我最近偶然发现了类似的问题。我无法应用@dudklein 解决方案(调试器尝试获取输入时出现 I/O 错误 - ipdb、pdb 等)

我使用了远程 python debbuger- winpdb,它是嵌入式调试

  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
    

    它会提示您输入密码(使用您在代码中设置的密码,在我的示例中为“pass”)并使用调试器运行漂亮的 GUI。

  6. 如果你需要教程winpdb-你在这里

在此处输入图像描述

于 2014-04-16T10:32:44.013 回答
2

如果您能够启动 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 werkzeugpip install ipdb)

于 2012-11-03T16:07:08.377 回答
2

我现在设法将 gunicron 与 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 的开发服务器不是必需的,但我决定尝试使用 gunicordn 和 ipdb 并且它有效。

于 2012-12-14T09:57:50.607 回答
0

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

因此,您需要在同一台机器上拥有 2 个不同的存储库,一个是 LIVE 生产版本(一个正在运行gunicorn),另一个是 TEST 版本,我需要在我使用的地方进行调试pdb。当 TEST 构建上的事情看起来稳定时,我将TEST branchLIVE branch. LIVE branch避免合并冲突的方式不会发生任何开发或更改。

希望这可以帮助其他上瘾的人pdb;)

于 2012-12-14T03:22:47.830 回答