python 10053_终于解决socket 10053问题

socket 10053问题表现为后台服务器抛出异常,说前端主动断开,那么原因是什么?这个问题已经困扰我好长时间,终于今天找到原因了。(如果只想看结果,可以跳过下面若干段落)

开始我以为服务器可能会有某些bug,于是查到python 2.7有一个 问题和patch,但是这个只解决了问题的显示,并不能真正解决问题。

在chrome中你会看到请求被cancel掉,但是没有任何的人为操作,为什么会被cancel掉呢?在stackoverflow上找到 一篇文章 这里讲述了如何查看chrome的event。根据指引,我学会了如何看event,发现的确是chrome断开的,但是为什么呢,还是无法知道。

突然之间不知是因为什么,我看到了jquery调用时可以传递timeout参数,我突然想到,会不会是它造成的。打开我那个出错页面,在console中输入: $.ajaxSettings,结果我看到了里面的确有timeout:500的信息。我说什么在event中看到了,当执行到500毫秒时会主动取消,同时会向服务器发出断开的消息呢,原来都是这个timeout害的。

知道了原因,于是查找哪里调用。终于在plugs中的一个jqmultipleselect插件中发现,它使用了一个叫localisation的插件,用来动态从后台装载js的翻译文件。就是在这里,它调用了$.ajaxSetup来设置超时时间为500。它原来的代码是保存了原始的timeout值,在处理之后又改回去,但是因为全局的timeout在开始是undefined的状态,所以在恢复时无法再恢复成原来的状态(即未定义的状态)。我找到 localisation 的网站,发现它已经升级到了1.1.0,我的是1.0.4。于是我下载了新的代码,它已经进行了调整,不再使用$.ajaxSetup来处理,而是在调用$.ajax时进行处理,所以这个问题在升级到新版本后终于被解决了。

所以,以后如果有类似10053的问题,不妨考虑一下是不是jquery的设置上有问题。当然10053并不全是因为jquery引起的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值