From 46c39b28d6405cb7a91f521d7a467fb35cf62b10 Mon Sep 17 00:00:00 2001 From: Unrud Date: Mon, 31 Aug 2020 13:54:47 +0200 Subject: [PATCH] Make shutdown_socket optional --- radicale/server.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/radicale/server.py b/radicale/server.py index 3b8e533..8cada22 100644 --- a/radicale/server.py +++ b/radicale/server.py @@ -200,8 +200,16 @@ class RequestHandler(wsgiref.simple_server.WSGIRequestHandler): handler.run(self.server.get_app()) -def serve(configuration, shutdown_socket): - """Serve radicale from configuration.""" +def serve(configuration, shutdown_socket=None): + """Serve radicale from configuration. + + `shutdown_socket` can be used to gracefully shutdown the server. + The socket can be created with `socket.socketpair()`, when the other socket + gets closed the server stops accepting new requests by clients and the + function returns after all active requests are finished. + + """ + logger.info("Starting Radicale") # Copy configuration before modifying configuration = configuration.copy() @@ -270,7 +278,8 @@ def serve(configuration, shutdown_socket): if max_connections <= 0 or len(rlist) < max_connections: rlist.extend(servers) # Use socket to get notified of program shutdown - rlist.append(shutdown_socket) + if shutdown_socket is not None: + rlist.append(shutdown_socket) rlist, _, _ = select.select(rlist, [], [], select_timeout) rlist = set(rlist) if shutdown_socket in rlist: