From 23b3e642a0fec91f81938a143354f230ca8ec4f9 Mon Sep 17 00:00:00 2001 From: Andrew Date: Thu, 20 Oct 2022 15:33:51 -0400 Subject: [PATCH 1/2] Only collect server stats when clients --- app/classes/shared/server.py | 107 +++++++++++++++++++---------------- 1 file changed, 57 insertions(+), 50 deletions(-) diff --git a/app/classes/shared/server.py b/app/classes/shared/server.py index 9bc86017..257bf64f 100644 --- a/app/classes/shared/server.py +++ b/app/classes/shared/server.py @@ -1223,41 +1223,19 @@ class ServerInstance: # ********************************************************************************** def realtime_stats(self): - total_players = 0 - max_players = 0 - servers_ping = [] - raw_ping_result = [] - raw_ping_result = self.get_raw_server_stats(self.server_id) - - if f"{raw_ping_result.get('icon')}" == "b''": - raw_ping_result["icon"] = False - - servers_ping.append( - { - "id": raw_ping_result.get("id"), - "started": raw_ping_result.get("started"), - "running": raw_ping_result.get("running"), - "cpu": raw_ping_result.get("cpu"), - "mem": raw_ping_result.get("mem"), - "mem_percent": raw_ping_result.get("mem_percent"), - "world_name": raw_ping_result.get("world_name"), - "world_size": raw_ping_result.get("world_size"), - "server_port": raw_ping_result.get("server_port"), - "int_ping_results": raw_ping_result.get("int_ping_results"), - "online": raw_ping_result.get("online"), - "max": raw_ping_result.get("max"), - "players": raw_ping_result.get("players"), - "desc": raw_ping_result.get("desc"), - "version": raw_ping_result.get("version"), - "icon": raw_ping_result.get("icon"), - "crashed": self.is_crashed, - } - ) + # only get stats if clients are connected. + # no point in burning cpu if len(self.helper.websocket_helper.clients) > 0: - self.helper.websocket_helper.broadcast_page_params( - "/panel/server_detail", - {"id": str(self.server_id)}, - "update_server_details", + total_players = 0 + max_players = 0 + servers_ping = [] + raw_ping_result = [] + raw_ping_result = self.get_raw_server_stats(self.server_id) + + if f"{raw_ping_result.get('icon')}" == "b''": + raw_ping_result["icon"] = False + + servers_ping.append( { "id": raw_ping_result.get("id"), "started": raw_ping_result.get("started"), @@ -1276,24 +1254,53 @@ class ServerInstance: "version": raw_ping_result.get("version"), "icon": raw_ping_result.get("icon"), "crashed": self.is_crashed, - "created": datetime.datetime.now().strftime("%Y/%m/%d, %H:%M:%S"), - }, + } ) - total_players += int(raw_ping_result.get("online")) - max_players += int(raw_ping_result.get("max")) - - self.record_server_stats() - - if (len(servers_ping) > 0) & (len(self.helper.websocket_helper.clients) > 0): - try: - self.helper.websocket_helper.broadcast_page( - "/panel/dashboard", "update_server_status", servers_ping + if len(self.helper.websocket_helper.clients) > 0: + self.helper.websocket_helper.broadcast_page_params( + "/panel/server_detail", + {"id": str(self.server_id)}, + "update_server_details", + { + "id": raw_ping_result.get("id"), + "started": raw_ping_result.get("started"), + "running": raw_ping_result.get("running"), + "cpu": raw_ping_result.get("cpu"), + "mem": raw_ping_result.get("mem"), + "mem_percent": raw_ping_result.get("mem_percent"), + "world_name": raw_ping_result.get("world_name"), + "world_size": raw_ping_result.get("world_size"), + "server_port": raw_ping_result.get("server_port"), + "int_ping_results": raw_ping_result.get("int_ping_results"), + "online": raw_ping_result.get("online"), + "max": raw_ping_result.get("max"), + "players": raw_ping_result.get("players"), + "desc": raw_ping_result.get("desc"), + "version": raw_ping_result.get("version"), + "icon": raw_ping_result.get("icon"), + "crashed": self.is_crashed, + "created": datetime.datetime.now().strftime( + "%Y/%m/%d, %H:%M:%S" + ), + }, ) - self.helper.websocket_helper.broadcast_page( - "/status", "update_server_status", servers_ping - ) - except: - Console.critical("Can't broadcast server status to websocket") + total_players += int(raw_ping_result.get("online")) + max_players += int(raw_ping_result.get("max")) + + self.record_server_stats() + + if (len(servers_ping) > 0) & ( + len(self.helper.websocket_helper.clients) > 0 + ): + try: + self.helper.websocket_helper.broadcast_page( + "/panel/dashboard", "update_server_status", servers_ping + ) + self.helper.websocket_helper.broadcast_page( + "/status", "update_server_status", servers_ping + ) + except: + Console.critical("Can't broadcast server status to websocket") def get_servers_stats(self): From b3d28b149ef334f4baec6f38356f1edef6a84d64 Mon Sep 17 00:00:00 2001 From: Zedifus Date: Sat, 22 Oct 2022 20:26:34 +0100 Subject: [PATCH 2/2] Update changelog !488 --- CHANGELOG.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e374c8bf..c9d2537d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,8 +12,7 @@ ### Tweaks - Fix sidebar to not move when scrolling ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/481)) - Add the rest of CSS predefined colors to themes ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/477)) -### Lang -TBD +- Only send realtime stats when clients connected ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/488))

## --- [4.0.15] - 2022/10/02