python多线程操作报错:No handlers could be found for logger "websocket"


用python模拟对讲机在线工具,在服务器上成功连接的连接上限是1020个,需要确定遇到这个瓶颈的原因
1.连接失败时的报错信息为
No handlers could be found for logger "websocket"

解决方法:
import logging
logging.basicConfig()

2.上述问题修正后获得的具体报错信息如下:
ERROR:websocket:error from callback <bound method pressure_webSocket.on_error of <lib.protocol.pressure_webSocket instance at 0x7f9b4415a248>>: cannot concatenate 'str' and 'exceptions.ValueError' objects

解决方法:websocket的回调处理函数中错误数据没有转化为字符串就做了连接,需要在错误数据
def on_error(self,ws,error):
    log.error(error)
跟正为:
def on_error(self,ws,error):
    log.error(str(error))

3.在websocket的回调中增加对异常数据的处理纠正之后,程序的报错信息如下:
Error#  filedescriptor out of range in select()

报错原因:python的socket模块调用了select模块的源代码,而执行select调用的时候,传入了大于1024的fd就会导致上面的错误

4.大量使用短链接,所以导致单进程的 fd 个数升高,超出了 1024 限制,出现了最开始的异常

解决方法:
(1)因为这个值是定义在内核里面,所以如果在维持目前方案不变的前提下,解决这个问题就需要重新编译 Linux-kernel,将这个值提高
(2)修改 stpclient 的客户端,使用epoll,代替比较老旧的 select,当时使用 select 的原因是,fd 个数很少,性能上没有问题,同时 select 在其他平台上也可以得到支持
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值