Add a supports_reuse_port method to check if the operating system supports reuse port.

pull/505/head
VergilGao 2024-08-29 14:21:15 +08:00
parent 2e6199b867
commit 04e82533c7
1 changed files with 10 additions and 1 deletions

View File

@ -4,6 +4,7 @@
import os import os
import sys import sys
from aiohttp import web from aiohttp import web
import socket
import socketio import socketio
import logging import logging
import json import json
@ -247,8 +248,16 @@ async def on_prepare(request, response):
app.on_response_prepare.append(on_prepare) app.on_response_prepare.append(on_prepare)
def supports_reuse_port():
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
sock.close()
return True
except (AttributeError, OSError):
return False
if __name__ == '__main__': if __name__ == '__main__':
logging.basicConfig(level=logging.DEBUG) logging.basicConfig(level=logging.DEBUG)
log.info(f"Listening on {config.HOST}:{config.PORT}") log.info(f"Listening on {config.HOST}:{config.PORT}")
web.run_app(app, host=config.HOST, port=int(config.PORT), reuse_port=True) web.run_app(app, host=config.HOST, port=int(config.PORT), reuse_port=supports_reuse_port())