同一端口上的Python端口/套接字多重连接,如何为每个客户端保持稳定的连接(预计有100万个客户端)

时间:2015-09-23 14:17:35

标签: python multithreading sockets tcp multiprocessing

逻辑:

客户< -----连接-----> Python中的服务器端口侦听脚本(例如TCP端口11112)

  • 每个客户端设备(例如GPS设备)连接到服务器端口并建立成功连接。
  • 连接后,我们需要保持该特定设备的连接处于活动状态且稳定。
  • 在并行中,我们需要接受来自同一端口中其他设备的连接。
  • 我们在python中使用多线程概念实现了这一点。一个线程将与一个设备建立专用连接。
  • 一旦没有特定时间的数据,线程将被关闭。

此逻辑目前在20个并联设备上工作正常。

我们预计很快将与100万台设备连接。 python中可以处理设备和服务器之间大量活动连接的最佳解决方案是什么?

注意:我们可以设置多个端口并确保端口之间共享负载,但主动连接限制(线程备用)必须是我们的重点。

1 个答案:

答案 0 :(得分:0)

您的问题通常称为c10K problem。通常,线程或进程会为处理这么多连接带来太大的开销。

可用的解决方案太多,无法列出,从切换到更加并发友好的语言,如Go或Erlang,采用专注于解决此问题的特定Python框架。

对于Python,您可以查看以下库:

https://twistedmatrix.com/trac/

http://www.gevent.org/

https://docs.python.org/3/library/asyncio.html