Python Django URL解析基础结构停止工作
我们最近推出了一个新的Django网站,我们遇到了最奇怪的错误: 该站点在Apache下运行,带有mod_fastcgi。在一段时间内一切正常,然后URL标记和reverse()功能停止工作。它们不返回预期的URL,而是返回“” 我们没有注意到Apache日志文件中的任何内容;Django没有生成任何错误。和(冲击器)问题只发生在生产模式中;当DEBUG=True时,我们无法复制它 关于我们应该在哪里寻找问题,有什么想法吗Python Django URL解析基础结构停止工作,python,django,fastcgi,django-urls,Python,Django,Fastcgi,Django Urls,我们最近推出了一个新的Django网站,我们遇到了最奇怪的错误: 该站点在Apache下运行,带有mod_fastcgi。在一段时间内一切正常,然后URL标记和reverse()功能停止工作。它们不返回预期的URL,而是返回“” 我们没有注意到Apache日志文件中的任何内容;Django没有生成任何错误。和(冲击器)问题只发生在生产模式中;当DEBUG=True时,我们无法复制它 关于我们应该在哪里寻找问题,有什么想法吗 更新:结果是settings.LANGUAGES出现了问题,尽管我们还没
更新:结果是settings.LANGUAGES出现了问题,尽管我们还没有确定其确切原因。Django在未处于调试模式的环境中匹配URL时有一种奇怪的行为 例如,如果DEBUG=False,Django将忽略URL,例如: url(r'^',包括('someapp.url') 特别是在上述情况下,可以让字符串为空: url(r“”,包括('someapp.url') 换句话说,检查你的正则表达式
你能把你的URL.py放在这里进行分析吗?我以前也遇到过这种情况。通常这是由于URL.py文件“损坏”所致。有两件事使得这种bug很难修复:
- 它可能是任何应用程序中破坏reverse()函数的url.py文件,因此知道app X的reverse()中断并不意味着错误在该特定应用程序的url.py中
- Django甚至不会通知您URL.py文件中的错误,除非您通过在URL.py文件中执行非常非常讨厌的操作,设法使站点崩溃
调试:我解决这个问题的方法是手动禁用所有应用程序(只需在已安装的应用程序中注释掉它们的行)并检查reverse()是否有效。如果它仍然有效,那么我将启用下一个应用程序,直到它崩溃。我知道,非常基本的东西,但它是有效的:)当问题发生时,服务器的响应是否非常慢?@rz:从我们可以看出不是这样。我们也在运行memcache来保持状态。你有没有试着在mod_wsgi后面运行,看看问题是否消失了?过去,我在fastcgi上遇到过一些非常奇怪的问题。@rz:是的,这就是我们最终要做的。到目前为止,我们看到的问题已经消失了。:-)事实证明,这并没有解决问题。。。