我有一个使用Gunicorn和Nginx的Django网站。偶尔,我会遇到需要调试的问题。在过去,我会关闭Gunicorn和Nginx,转到我的Django项目目录并启动Django开发服务器(" python ./manage.py runserver 0:8000"),然后重新启动Nginx。然后我可以插入set_trace()命令并进行调试。当我解决问题时,我关闭了Nginx,然后重启了Gunicorn和Nginx。我很确定这是有效的。
最近,我开始遇到问题。现在发生的事情是,当我在一个断点处停下来时,几分钟之后,我已经停止的网页将会改变并显示“未找到404”#34;如果我在调试器中再迈出一步,我会看到这个错误:
- Broken pipe from ('127.0.0.1', 43742)
这种情况发生在我通过其域名访问的开发,转发和生产服务器上,例如: " web01.example.com" (不是真的例子)。
在远程服务器上调试Django应用程序的正确方法是什么?
感谢。
答案 0 :(得分:0)
我弄明白了这个问题。首先我观察到,当我在断点处停下来时,页面总是在一分钟后超时,这表明如果Web服务器花了超过60秒的时间响应,Nginx与Web服务器的连接就会超时。然后我找到了一个Nginx proxy_read_timeout directive来定义这个超时。然后,这只是在我的Nginx配置文件中更改超时的长度:
# /etc/nginx/sites-enabled/example.conf
http {
server {
...
location @django {
...
# Set timeout to 1 hour
proxy_read_timeout 3600s;
...
}
...
}
}
完成此更改后,您需要重新加载 Nginx,而不是重新启动它,以使此更改生效。然后你按照我上面的说明启动Django,你现在可以调试你的Django应用程序,而不会超时。完成调试后,请务必删除超时设置,再次重新加载Nginx,然后重新启动Gunicorn。