如何维护 socket 链接池

2019-08-07 15:09:50 +08:00
 cz5424

背景

每个任务需要建立一个 tcp 链接, 发送数据到 iot 设备, 在并发量高的情况下,tcp 链接不能有效的复用, 每次链接花费的代价太高

疑问

想要请教一下有没有维护一个 socket 链接池的方法或者例子?

使链接发起之后在一定时间内保持 tcp 链接不中断, 如 rabbitmq 的 60 秒不活跃就关闭链接

3807 次点击
所在节点    Python
29 条回复
lloovve
2019-08-07 19:40:25 +08:00
断开除非你客户端定时自动链接服务器
lazyfighter
2019-08-07 19:55:42 +08:00
netty 不是现成的吗
iamsk
2019-08-07 20:30:00 +08:00
可以基于 socketpool 实现一个,其中 max_lifetime 设置生命周期
https://github.com/benoitc/socketpool
基于这个比较简单,也可以参考 redis 的 python 库实现,见 connection.py
MMMMMMMMMMMMMMMM
2019-08-07 20:59:22 +08:00
跟网游一样,发心跳包

别无他法
realpg
2019-08-07 21:12:25 +08:00
这种场景…… UDP 大法好……
cabing
2019-08-07 21:18:06 +08:00
你自己也可以做个吧。

把连接放到容器里面,加上定时器,定时心跳。
cz5424
2019-08-07 21:39:49 +08:00
谢谢各位大佬,下班了没看信息,等我慢慢消化一波
cz5424
2019-08-08 17:26:53 +08:00
@lazyfighter
@BBCCBB
@DeepRedApple

不是 java, 在 python 环境下, 我会去参考它的实现
Tracy1997
2019-08-12 08:54:46 +08:00
楼主有方案了吗,能不能贴下代码。最近也要写一个 TCP 服务器,接受几千个长连接一直发数据过来然后保存到数据库,还没想好怎么弄。多路复用可以吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/589831

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX