@@ -187,6 +187,7 @@ class BaseServer:
187187 - address_family
188188 - socket_type
189189 - allow_reuse_address
190+ - allow_reuse_port
190191
191192 Instance variables:
192193
@@ -425,6 +426,7 @@ class TCPServer(BaseServer):
425426 - socket_type
426427 - request_queue_size (only for stream sockets)
427428 - allow_reuse_address
429+ - allow_reuse_port
428430
429431 Instance variables:
430432
@@ -442,6 +444,8 @@ class TCPServer(BaseServer):
442444
443445 allow_reuse_address = False
444446
447+ allow_reuse_port = False
448+
445449 def __init__ (self , server_address , RequestHandlerClass , bind_and_activate = True ):
446450 """Constructor. May be extended, do not override."""
447451 BaseServer .__init__ (self , server_address , RequestHandlerClass )
@@ -463,6 +467,8 @@ def server_bind(self):
463467 """
464468 if self .allow_reuse_address :
465469 self .socket .setsockopt (socket .SOL_SOCKET , socket .SO_REUSEADDR , 1 )
470+ if self .allow_reuse_port :
471+ self .socket .setsockopt (socket .SOL_SOCKET , socket .SO_REUSEPORT , 1 )
466472 self .socket .bind (self .server_address )
467473 self .server_address = self .socket .getsockname ()
468474
@@ -519,6 +525,8 @@ class UDPServer(TCPServer):
519525
520526 allow_reuse_address = False
521527
528+ allow_reuse_port = False
529+
522530 socket_type = socket .SOCK_DGRAM
523531
524532 max_packet_size = 8192
0 commit comments