我有一个应用程序,服务器可以将数据发送到多个客户端。在服务器端,我启动2个线程:
发送数据功能:
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()
由于它按顺序向客户端发送数据,因此可扩展性不高。一种方法是为每个客户端启动一个单独的线程。这也将消耗内存而不是可扩展的。
有哪些其他好的选择(如果可能,等效代码)?