Python 的 tcp 服务器解算数据后,数据入库的正确方式是什么?

2019-09-06 16:26:48 +08:00
 youngce

目前项目中有一个 python 编写的 TCP 服务器,需要接收到客户端数据后进行解码、分析,对分析的结果(比如客户端已经离线的消息)写入数据库。

所以是要在写数据库的时候直接另起一个线程进行操作吗?或者有没有其他的更好的方式?

2354 次点击
所在节点    Python
8 条回复
Yourshell
2019-09-06 16:29:38 +08:00
异步
lbp0200
2019-09-06 16:34:08 +08:00
python threadpool
youngce
2019-09-06 16:35:30 +08:00
@Yourshell #1 所以 tcp 服务器算完数据,直接甩 rabbitmq,然后另外一个线程再来消费,写入数据库是不是也是以一个不错的办法?
toono
2019-09-06 16:45:49 +08:00
@youngce 我认为你说的是不错的做法,虽然说引入了 rabbitmq,但是对于执行进度和结果都可以按需监控到。如果直接用 threadpool 的话就需要自己设计如何保证任务执行的可靠性,对于人力成本来说还是存在的。
youngce
2019-09-06 17:39:00 +08:00
@toono #4 是的,目前我就是这几个方案了,坐等大佬来给我建议了
hspeed18
2019-09-06 18:59:43 +08:00
量不大的话同步写也不是不可以
lolizeppelin
2019-09-07 02:42:04 +08:00
一般来说 要分数据收发线程和数据处理线程

收发线程接收到完整的自定义协议包后,讲数据塞队列里,然后继续收数据

数据处理线程从队列里取数据然后进行处理
wd
2019-09-08 05:25:25 +08:00
看你处理数据的时候是不是要 block 其他请求吧……

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

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

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

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

© 2021 V2EX