@@ -187,6 +187,7 @@ class BaseServer:
187
187
- address_family
188
188
- socket_type
189
189
- allow_reuse_address
190
+ - allow_reuse_port
190
191
191
192
Instance variables:
192
193
@@ -425,6 +426,7 @@ class TCPServer(BaseServer):
425
426
- socket_type
426
427
- request_queue_size (only for stream sockets)
427
428
- allow_reuse_address
429
+ - allow_reuse_port
428
430
429
431
Instance variables:
430
432
@@ -442,6 +444,8 @@ class TCPServer(BaseServer):
442
444
443
445
allow_reuse_address = False
444
446
447
+ allow_reuse_port = False
448
+
445
449
def __init__ (self , server_address , RequestHandlerClass , bind_and_activate = True ):
446
450
"""Constructor. May be extended, do not override."""
447
451
BaseServer .__init__ (self , server_address , RequestHandlerClass )
@@ -463,6 +467,8 @@ def server_bind(self):
463
467
"""
464
468
if self .allow_reuse_address :
465
469
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 )
466
472
self .socket .bind (self .server_address )
467
473
self .server_address = self .socket .getsockname ()
468
474
@@ -519,6 +525,8 @@ class UDPServer(TCPServer):
519
525
520
526
allow_reuse_address = False
521
527
528
+ allow_reuse_port = False
529
+
522
530
socket_type = socket .SOCK_DGRAM
523
531
524
532
max_packet_size = 8192
0 commit comments