用于服务器 - 客户端网络i / o的可扩展套接字

时间:2016-03-19 23:52:18

标签: python multithreading sockets asyncsocket

我有一个应用程序,服务器可以将数据发送到多个客户端。在服务器端,我启动2个线程:

  1. 接受连接
  2. 向连接的客户端发送数据。
  3. 发送数据功能:

    def send_data(self):
            '''this function is a thread which sends data to clients as Queue is filled by the on_move_up function'''
            while True:
                data=self.line_queue.get() # get data from queue
                json_data=json.dumps(data)          
                for client in self.clients_stroke:
                    try:
                        client.send(json_data)
                    except socket.error as e: # if no socket if connected
                        # ... write code here to remove that client from socket 
                        traceback.print_exc()
                self.line_queue.task_done() # task completed
            s.close()
    

    由于它按顺序向客户端发送数据,因此可扩展性不高。一种方法是为每个客户端启动一个单独的线程。这也将消耗内存而不是可扩展的。

    有哪些其他好的选择(如果可能,等效代码)?

0 个答案:

没有答案