Javascript django断管错误的可疑解决方案

Javascript django断管错误的可疑解决方案,javascript,django,firefox,Javascript,Django,Firefox,在我的django应用程序中,我调用location.reload()。这在Chrome上运行得很好,但在Firefox4上,我在我的开发服务器(Django 1.2.5,Python 2.7)上收到了两次管道破裂的错误:[Errno 32],大约需要10秒。 这个错误似乎吞噬了我试图使用django消息框架显示的消息 不,我把这行换成了 var uri = location.href; location.href = uri; 现在重新加载仍然需要10秒,但是Firefox会显示消息 到目前

在我的django应用程序中,我调用
location.reload()。这在Chrome上运行得很好,但在Firefox4上,我在我的开发服务器(Django 1.2.5,Python 2.7)上收到了两次管道破裂的
错误:[Errno 32],大约需要10秒。
这个错误似乎吞噬了我试图使用django消息框架显示的消息

不,我把这行换成了

var uri = location.href;
location.href = uri;
现在重新加载仍然需要10秒,但是Firefox会显示消息

到目前为止,它是有效的。但对我来说,这看起来像一个肮脏的黑客。因此,我的问题是:

  • 有人能解释(或猜测)错误是什么吗
  • 你认为这个“解决方案”将来会对我造成什么问题吗

  • (注意:我不是第一个)。

    首先,这是一些特定浏览器的问题(可能还有服务器端的长处理),在django中不是问题

    从关于django的报告:

    这是一个常见错误,每当浏览器关闭连接,而开发人员服务器仍在忙于发送数据时,就会发生这种错误。我们最好能有一个更明确的错误消息

    它实际上可以发生在其他系统上,例如

    无需担心,因为这只意味着客户端在服务器之前关闭了连接。回溯之后,CherryPy服务器仍将正常运行

    这是对你的第一个问题的介绍:

  • 有人能解释(或猜测)错误是什么吗
  • 好吧,这只是浏览器关闭连接——有点像客户端超时。 这个答案确实回答了那个问题

    为什么更改
    location.href
    而不使用
    location.reload()
    ?我猜,但这只是一个猜测,Firefox的行为稍有不同,重新加载超时也会有所不同

    我认为该消息已被使用,因为当浏览器触发并关闭连接时,请求已被发送

    dev服务器是单线程的,这可能也是问题的一个因素

    我通常在真正的(本地)服务器上进行开发(nginx+apache+mod_wsgi,没什么特别的),这样可以避免在生产中遇到永远不会发生的愚蠢问题

  • 你认为这个“解决方案”将来会对我造成什么问题吗
  • 嗯,在重新加载之前检查
    href
    是否已更改的浏览器上,它可能无法工作。或者它可能会命中缓存而不是执行真正的请求(您可以使用reload()强制避免缓存)。在所有浏览器上,行为可能并不一致。 但再一次,你已经遇到了一个浏览器怪癖,所以我不会太担心它本身

    顺便说一下,您可以简单地执行以下操作:

    location.href = location.href
    
    我宁愿担心处理过程需要10秒!这真的不应该发生。 编辑,看起来是浏览器本身引发了长时间的处理和管道断裂错误。对我来说,单线程django服务器上的并行请求听起来很糟糕endedit

    在真正的Web服务器上测试,优化代码;如果这还不够,请使用芹菜+rabbitmq在后台进程上启动长任务;在任何情况下,不要在一个不是真正的问题上浪费时间


    您可能可以使用
    location.reload()
    和一些调整,或者可能只是一个真正的测试环境

    管道破裂错误也可能是由于Django调试服务器中缺少对某些功能的支持-一个值得注意的问题是Django缺少对(详情请参见此处:)的支持,这些功能通常在交付[流]媒体内容时使用


    使用数据包捕获程序(如Wireshark)研究实际的HTTP交换可能是值得的,这样您就可以看到问题发生的时间和地点。

    您使用的是django sentry吗?如果是,您的本地配置中有哪些设置?谢谢您的详细回答。你说得对,我将安装一个真正的本地服务器,看看问题是否仍然存在。只有当错误发生时,处理时间才会很长,在其他浏览器或情况下,处理时间会很短。你好,jammon,抱歉,休假一周。我想知道问题是否真的只是在某些特定浏览器上多个连接的糟糕管道化。。。我希望它发生在我的本地服务器上,这样我就可以真正了解它了。如果您有更多详细信息,请不要犹豫,希望您在“真正的”本地服务器设置下运行良好!