Python 如何在SocketServer中设置最大连接数

Python 如何在SocketServer中设置最大连接数,python,python-2.7,sockets,socketserver,Python,Python 2.7,Sockets,Socketserver,我正在试图找到一种方法来设置限制-在SocketServer中设置最大连接数 class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer): daemon_threads = True class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler): def handle(self): some code

我正在试图找到一种方法来设置限制-在
SocketServer
中设置最大连接数

class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
    daemon_threads = True


class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):
    def handle(self):
        some code 

有没有办法做到这一点?例如,最多3个客户端。

最简单的解决方案是统计活动连接数,并在达到限制时停止为新连接提供服务。缩小规模是接受新的TCP连接,然后关闭。希望没问题

我在不基于
SocketServer
的服务器中使用的代码基本上如下所示:

需要一个变量:

accepted_sockets = weakref.WeakSet()
WeakSet的优点是不再使用的元素会自动删除

一个简单的辅助函数:

def count_connections(self):
     return sum(1 for sock in accepted_sockets if sock.fileno() >= 0)
请求处理代码中的用法非常简单:

   if count_connections() >= MAX_CONN:
        _logger.warning("Too many simultaneous connections")
        sock.close()
        return
    accepted_sockets.add(sock)
    # handle the request
您必须对其进行调整,以便与
SocketServer
一起使用(例如,TCP套接字在此处称为
request
,可能是服务器处理socket.close等),但希望它能有所帮助