Python Django URL解析基础结构停止工作

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出现了问题,尽管我们还没

我们最近推出了一个新的Django网站,我们遇到了最奇怪的错误:

该站点在Apache下运行,带有mod_fastcgi。在一段时间内一切正常,然后URL标记和reverse()功能停止工作。它们不返回预期的URL,而是返回“”

我们没有注意到Apache日志文件中的任何内容;Django没有生成任何错误。和(冲击器)问题只发生在生产模式中;当DEBUG=True时,我们无法复制它

关于我们应该在哪里寻找问题,有什么想法吗


更新:结果是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:是的,这就是我们最终要做的。到目前为止,我们看到的问题已经消失了。:-)事实证明,这并没有解决问题。。。