From 04e82533c795b10c40f533d09071e4be8c543889 Mon Sep 17 00:00:00 2001 From: VergilGao <8655163+VergilGao@users.noreply.github.com> Date: Thu, 29 Aug 2024 14:21:15 +0800 Subject: [PATCH] Add a supports_reuse_port method to check if the operating system supports reuse port. --- app/main.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/main.py b/app/main.py index 48826df..4bad876 100644 --- a/app/main.py +++ b/app/main.py @@ -4,6 +4,7 @@ import os import sys from aiohttp import web +import socket import socketio import logging import json @@ -247,8 +248,16 @@ async def on_prepare(request, response): 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__': logging.basicConfig(level=logging.DEBUG) 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())